小编典典

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

all

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

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

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

 [myObject conformsToProtocol:@protocol(MyProtocol)];

如果我在正确的轨道上递归地提升类层次结构,请告诉我。


阅读 166

收藏
2022-08-21

共1个答案

小编典典

根据文档

[MyClass conformsToProtocol:@protocol(MyProtocol)];

应该管用。

2022-08-21