KVO delegate NSNotification

delegate 的 **优势 **:
1.非常严格的语法。所有将听到的事件必须是在delegate协议中有清晰的定义。
2.如果delegate中的一个方法没有实现那么就会出现编译警告/错误
3.协议必须在controller的作用域范围内定义
4.在一个应用中的控制流程是可跟踪的并且是可识别的;
5.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegates
6.没有第三方对象要求保持/监视通信过程。
###### 7.能够接收调用的协议方法的返回值。这意味着delegate能够提供反馈信息给controller

#####delegate是一种回掉函数,更多的用在一对一的场合

notification的 优势
1.不需要编写多少代码,实现比较简单;

       #####2.对于一个发出的通知,多个对象能够做出反应,即1对多的方式实现简单
   3.controller能够传递context对象(dictionary),context对象携带了关于发送通知的自定义的信息
 ######4.通知发出后,controller不能从观察者获得任何的反馈信息。

KVO优势
1.能够提供一种简单的方法实现两个对象间的同步。例如:model和view之间同步;
2.能够对非我们创建的对象,即内部对象的状态改变作出响应,而且不需要改变内部对象(SKD对象)的实现;
3.能够提供观察的属性的最新值以及先前值;
4.用key paths来观察属性,因此也可以观察嵌套对象;
5.完成了对观察对象的抽象,因为不需要额外的代码来允许观察值能够被观察
缺点
1.我们观察的属性必须使用strings来定义。因此在编译器不会出现警告以及检查;
2.对属性重构将导致我们的观察代码不再可用;
3.复杂的“IF”语句要求对象正在观察多个值。这是因为所有的观察代码通过一个方法来指向;
4.当释放观察者时不需要移除观察者。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,967评论 25 709
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,297评论 30 472
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,306评论 19 139
  • 进度:P50-P90 1.物种灭绝浪潮 第一波——远古采集者的扩张; 第二波——农民的扩张; 第三波——工业活动所...
    大林_Rbenefit阅读 1,488评论 0 0
  • 美丽的宝贝 虽然你现在可能没有遇到能陪伴你的人,但是宝贝,相信自己,人生就像巧克力,你永远不知道下一个是什么,所以...
    斌宝宝阅读 851评论 0 0