如何为 Objective-C 协议提供默认实现?

2024-03-06

我想指定一个具有可选例程的 Objective-C 协议。当例程不是由符合协议的类实现时,我想在其位置使用默认实现。协议本身是否有一个地方可以定义这个默认实现?如果不是,那么减少到处复制和粘贴此默认实现的最佳实践是什么?


Objective-C 协议无法提供默认实现。它们纯粹是可以由其他类实现的方法声明的集合。 Objective-C 中的标准做法是在运行时测试一个对象,看看它是否响应给定的选择器,然后再调用该方法,使用 -[NSObject respondsToSelector:]。如果 e 对象不响应给定的选择器,则不会调用该方法。

实现所需结果的一种方法是定义一个方法,该方法封装您在调用类中寻找的默认行为,并在对象未通过测试时调用该方法。

另一种方法是使该方法在协议中成为必需的,并在您可能不想提供特定实现的任何类的超类中提供默认实现。

可能还有其他选项,但一般来说,Objective-C 中没有特定的标准实践,除非根据我上面的第一段,如果对象尚未实现给定的方法,则可能不调用给定的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 Objective-C 协议提供默认实现? 的相关文章