2

文档class_addProtocol非常基础,并没有真正解释如何使用它。

我的解释是,当我想在运行时向类添加协议时,我应该调用class_addMethod从协议中添加每个方法,然后调用class_addProtocol. 我真正不明白的是我是否以及为什么需要打电话class_addProtocol。当然,通过添加所有协议方法,该类已经符合协议,那么class_addProtocol实际上做了什么?

4

1 回答 1

3

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

大多数时候这不是问题,因为大部分时间-respondsToSelector:就足够了,但它是一个方便的好工具。

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

于 2012-08-05T00:39:46.983 回答