source

Objective-C Runtime: 클래스가 프로토콜을 준수하는지 확인하는 가장 좋은 방법입니다.

ittop 2023. 4. 17. 22:28
반응형

Objective-C Runtime: 클래스가 프로토콜을 준수하는지 확인하는 가장 좋은 방법입니다.

클래스가 있으며(인스턴스는 없음) 특정 프로토콜에 부합하는지 확인해야 합니다.그러나 클래스는 여러 번 하위 분류할 수 있으며 class_conformsToProtocol()은 슈퍼 클래스에 선언된 프로토콜을 무시합니다.

class_getSuperclass()를 사용하여 슈퍼클래스가 0이 될 때까지 계층 내 모든 클래스를 반복적으로 체크할 수 있습니다.하지만 저는 그것이 깊이 중첩된 계급 계층에 비효율적일 수 있는지, 그리고 그렇게 할 수 있는 더 좋은 방법이 없을지 궁금해요.

즉, NSObject 메서드는 Objective-C 런타임 메서드를 사용하여 어떻게 구현되어 슈퍼클래스에서 프로토콜을 찾을 수 있습니까?

 [myObject conformsToProtocol:@protocol(MyProtocol)];

만약 제가 학급 계층이 반복적으로 올라가는 올바른 방향으로 가고 있다면, 제게 알려주세요.

의사들에 따르면

[MyClass conformsToProtocol:@protocol(MyProtocol)];

작동해야 합니다.

또는 일반 포인터인 경우 다음과 같이 입력합니다.

Class<MyProtocol> someClassPointer = nil;

다음을 사용할 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/3436257/objective-c-runtime-best-way-to-check-if-class-conforms-to-protocol

반응형