저는 링크별로 다른 프로젝트에서 사용할 수있는 제네릭 클래스를 작성합니다.
얼마 지나지 않아 객체를 소유하고 클래스에 할당 된 리스너에 대한 메서드를 호출합니다.
하지만 때로는 해당 호출자가 사라질 수 있으므로 반환 메시지를 응용 프로그램 대리인에게 전달해야합니다. 여기iPhone - 제네릭 클래스 내에서 응용 프로그램 대리인을 참조하십시오.
내가 발신자에 대해 어떻게입니다 (호출자가 만든 하나이며 내 클래스의 인스턴스 소유) :
if ([self.responseListener respondsToSelector:@selector(serverAnswered:error:)]) {
// some job to construct the return object
[self.responseListener performSelector:@selector(serverAnswered:error:) withObject:response withObject:nil];
}
나는 responseListener 대신에 애플 대리자 클래스를 참조 할 수 있습니다 어떻게 발신자가 사라 졌나요?
예, 앱 대리인에서 맞춤 메소드를 호출하고 싶습니다. 내 클래스는 일반적이고 다른 프로젝트에 포함될 수 있기 때문에 클래스는 포함 된 프로젝트에 사용되는 응용 프로그램 위임 클래스의 이름을 알지 못합니다. 클래스를 knocking하지 않고 두 번째 호출을 작성하는 방법이 있습니까? 앱 대리인의 이름입니다. – Oliver
할 일은 라이브러리 사용자가 자신의 앱 델리게이트에 프로토콜을 구현하도록 요구하는 것입니다. 내 대답을 업데이트 할게. –
동의합니다. 그러나 일부 특정 경우에만 호출되는 메서드를 구현하도록 응용 프로그램을 강제 적용 할 수 없습니다. 특정 호출이 일반 개체로 트리거 될 때 발생합니다. 제네릭 클래스에서 구현 된 다른 모든 메서드는 유용하지 않습니다. 따라서 앱 대리인이 해당 메소드를 구현했는지 확인하고 그렇지 않은 경우 세 번째 경로로 이동하는 것이 좋습니다. – Oliver