我有一个类(但没有实例),需要知道它是否符合某个协议。但是,Class 可以被子类化多次,并且 class_conformsToProtocol() 忽略在超类上声明的协议。
我可以只使用 class_getSuperclass() 并向上递归检查层次结构中的所有类,直到超类为零。但是我想知道这对于深度嵌套的类层次结构是否效率低下,也许有更好的方法来做到这一点?
换句话说,NSObject 方法conformsToProtocol 如何最好地使用Objective-C 运行时方法实现,以便它在超类上找到协议?
[myObject conformsToProtocol:@protocol(MyProtocol)];
如果我在正确的轨道上递归地提升类层次结构,请告诉我。
或者,如果它是一个通用指针,例如:
Class<MyProtocol> someClassPointer = nil;
您可以使用:
[someClassPointer.class conformsToProtocol:@protocol(MyProtocol)];
self.delegate
实现了多个协议,我想检查它是否符合其他协议而不是它的类。[someObject conformsToProtocol:@protocol(MyProtocol)]
。