NSObject协议附带了库存协议模板,但对于协议的实际实现似乎并不是必需的.离开它似乎完全没有改变.那么协议是否真的需要继承,还是只是一个不必要的加载项呢?
解决方法
多年来(和许多像我一样)没有使我们的协议符合< NSObject>.工作正常但是它常常会令人讨厌.最常见的烦恼是您不能使用respondToSelector:不转发到NSObject *(哪种方式打败了协议的全部).在ObjC1天没有关系,因为没有@optional,所以我们都不担心(在那些日子我们根本没有使用协议,因为没有@optional他们没有那么有用).然后ObjC2伴随着精美的可选方法的添加,突然响应ToSelector:重要.对于我们较慢的人来说,花了一点时间,但是最终我们开始弄清楚,如果您的协议符合< NSObject>,生活将变得更加简单.有幸,这已经进入了
Xcode,使每个人都能以更方便的方式做事情变得更容易.
但不,你不必这样做.在很多情况下都没关系.但是没有太多理由不这样做,所以我推荐它.