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)];