Cod*_*aFi 19 objective-c nsobject ios
NSObject协议附带了库存协议模板,但它似乎并不是实际协议实现所必需的.离开它似乎完全没有改变.那么,协议是否真的有必要从中继承,还是仅仅是一个不必要的附加组件?
Rob*_*ier 20
多年来我(和许多像我一样)没有让我们的协议符合<NSObject>.它工作正常.但它往往很烦人.最常见的烦恼是你不能在没有respondsToSelector:反击的情况下使用NSObject*(哪种方式违背了协议的全部要点).这在ObjC1时代并不重要,因为没有@optional,所以我们都没有人担心它(在那些日子里我们根本没有使用协议,因为没有@optional它们没那么有用).然后ObjC2带来了可选方法的精彩添加,突然变得respondsToSelector:很重要.我们花了一些时间来讨论我们的慢,但最终我们开始发现,如果你的协议符合要求,生活就会简单得多<NSObject>.幸运的是,这已经进入Xcode,让每个人都能更方便地做事.
但不,你不必这样做.在许多情况下并不重要.但没有太多理由不去做,所以我推荐它.
不必要.委托只是一个帮助对象 - 唯一的要求是委托类放在它上面的那些要求.如果要形式化给定委托的要求,请创建正式协议,即使用该@protocol指令声明协议.如果符合NSObject协议是其中一项要求,您可以使您的协议采用它:
@protocol MyDelegateProtocol <NSObject>
//...
@end
Run Code Online (Sandbox Code Playgroud)
也就是说,我没有看到任何理由创建一个不是从NSObject或NSProxy派生的委托,并且这两个类已经符合NSObject协议.
| 归档时间: |
|
| 查看次数: |
5326 次 |
| 最近记录: |