class_addProtocol在Objective-C中实际做了什么?

时间:2012-08-05 00:25:23

标签: objective-c objective-c-runtime

class_addProtocol的{​​{3}}非常基本,并没有真正解释如何使用它。

我的解释是,当我想在运行时向类添加协议时,我应该调用class_addMethod来添加协议中的每个方法,然后调用class_addProtocol。我真正理解的是 if 为什么我需要调用class_addProtocol。当然,通过添加所有协议方法,类已经符合协议,那么class_addProtocol实际上做了什么?

1 个答案:

答案 0 :(得分:3)

它允许选择器-conformsToProtocol:起作用。在某些情况下(您可能有多个代表,可能需要响应某些事情而不是其他人),了解对象是否响应协议是有用的,而不仅仅是您请求的单个方法。

大部分时间这不是问题,因为大部分时间-respondsToSelector:已足够,但这是一个很方便的好工具。

请注意,您几乎不应该使用class_conformsToProtocol而不是-conformsToProtocol,因为它不会检查超类,并且可能会导致问题。