我有一个类(但没有实例),需要知道它是否符合特定的协议。但是,该类可以被多次子类化,并且class_conformsToProtocol()会忽略在超类上声明的协议。
我可以使用class_getSuperclass()并递归检查层级中所有向上的类,直到超类为nil。然而,我想知道是否对于深度嵌套的类层次结构来说这种方法可能效率低下,或者是否有更好的方式?
换句话说,在Objective-C运行时方法中如何最好地实现NSObject方法conformsToProtocol以便它可以发现超类上的协议?
我可以使用class_getSuperclass()并递归检查层级中所有向上的类,直到超类为nil。然而,我想知道是否对于深度嵌套的类层次结构来说这种方法可能效率低下,或者是否有更好的方式?
换句话说,在Objective-C运行时方法中如何最好地实现NSObject方法conformsToProtocol以便它可以发现超类上的协议?
[myObject conformsToProtocol:@protocol(MyProtocol)];
如果我在递归地沿着类层次结构向上走的路上正确,就让我知道。
self.delegate
实现了多个协议,我想检查它是否符合其他协议,而不仅仅是它的类。 - Konrad Piascik[someObject conformsToProtocol:@protocol(MyProtocol)]
。 - Wevah