Objective-C运行时:检查类是否符合协议的最佳方法?

我有一个类(但没有实例),需要知道它是否符合某个协议。 然而,Class可以被多次子类化,class_conformsToProtocol()忽略在超类上声明的协议。

我可以使用class_getSuperclass()并recursion地检查层次结构中的所有类,直到超类为零。 但是,我想知道这对于深度嵌套的类层次结构是否可能是低效率的,也许有更好的方法来做到这一点?

换句话说,如何使用Objective-C运行时方法最好地实现NSObject方法conformsToProtocol,以便在超类中find协议?

[myObject conformsToProtocol:@protocol(MyProtocol)]; 

如果我按照recursion的方式走上正确的轨道,请让我知道。

根据文件 ,

 [MyClass conformsToProtocol:@protocol(MyProtocol)]; 

应该pipe用。

或者,如果它是一般指针,如:

 Class<MyProtocol> someClassPointer = nil; 

您可以使用:

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