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

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

我可以只使用 class _ getSuperclass ()递归地向上检查层次结构中的所有类,直到超类为零。然而,我想知道这对于深度嵌套的类层次结构来说是否效率低下,也许有更好的方法来做到这一点?

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

 [myObject conformsToProtocol:@protocol(MyProtocol)];

如果我在正确的轨道上递归向上的类层次结构只是让我知道。

67144 次浏览

或者,如果它是一个普通的指针,比如:

Class<MyProtocol> someClassPointer = nil;

你可使用:

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