[objective-c] Objective-C Runtime : 클래스가 프로토콜을 준수하는지 확인하는 가장 좋은 방법은 무엇입니까?

클래스가 있지만 인스턴스가 없으며 특정 프로토콜을 준수하는지 알아야합니다. 그러나 클래스는 여러 번 서브 클래 싱 될 수 있으며 class_conformsToProtocol ()은 수퍼 클래스에 선언 된 프로토콜을 무시합니다.

class_getSuperclass ()를 사용하고 수퍼 클래스가 0이 될 때까지 계층 구조의 모든 클래스를 재귀 적으로 확인할 수 있습니다. 그러나 깊게 중첩 된 클래스 계층에 비효율적 일지 궁금해하며 더 좋은 방법이 있습니까?

다시 말해서 NSObject 메소드는 Objective-C 런타임 메소드를 사용하여 슈퍼 클래스에서 프로토콜을 찾을 수 있도록 ToProtocol을 어떻게 최상으로 구현합니까?

 [myObject conformsToProtocol:@protocol(MyProtocol)];

재귀 적으로 클래스 계층 구조를 올라 가면서 올바른 길을 가고 있다면 알려주세요.



답변

워드 프로세서에 따르면 ,

[MyClass conformsToProtocol:@protocol(MyProtocol)];

작동해야합니다.


답변

또는 다음과 같은 일반적인 포인터 인 경우 :

Class<MyProtocol> someClassPointer = nil;

당신이 사용할 수있는:

[someClassPointer.class conformsToProtocol:@protocol(MyProtocol)];


답변