클래스가 있지만 인스턴스가 없으며 특정 프로토콜을 준수하는지 알아야합니다. 그러나 클래스는 여러 번 서브 클래 싱 될 수 있으며 class_conformsToProtocol ()은 수퍼 클래스에 선언 된 프로토콜을 무시합니다.
class_getSuperclass ()를 사용하고 수퍼 클래스가 0이 될 때까지 계층 구조의 모든 클래스를 재귀 적으로 확인할 수 있습니다. 그러나 깊게 중첩 된 클래스 계층에 비효율적 일지 궁금해하며 더 좋은 방법이 있습니까?
다시 말해서 NSObject 메소드는 Objective-C 런타임 메소드를 사용하여 슈퍼 클래스에서 프로토콜을 찾을 수 있도록 ToProtocol을 어떻게 최상으로 구현합니까?
[myObject conformsToProtocol:@protocol(MyProtocol)];
재귀 적으로 클래스 계층 구조를 올라 가면서 올바른 길을 가고 있다면 알려주세요.
답변
답변
또는 다음과 같은 일반적인 포인터 인 경우 :
Class<MyProtocol> someClassPointer = nil;
당신이 사용할 수있는:
[someClassPointer.class conformsToProtocol:@protocol(MyProtocol)];