码迷,mamicode.com
首页 > 其他好文 > 详细

delegate、notification、KVO场景差别

时间:2015-07-22 12:44:24      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

delegate:

编译器会给出没有实现代理方法的警告

一对一

使用weak而不是assign,或者vc消失时置为nil

可以传递参数,还可以接收返回值

 

 

notification:

编译期无法排错

一对多

恰当时候需要移除注册,否则多次add会造成多次收到消息

可以传递参数,但无返回值、

 

 

KVO:

简单的实现两对象间的信息同步

能够对非我们创建的对象,即内部对象的状态改变作出响应,而且不需要改变内部对象(SKD对象)的实现

能够提供观察的属性的最新值以及先前值;

用key paths来观察属性,因此也可以观察嵌套对象

完成了对观察对象的抽象,因为不需要额外的代码来允许观察值能够被观察

 

我们观察的属性必须使用strings来定义。因此在编译器不会出现警告以及检查

对属性重构将导致我们的观察代码不再可用;

复杂的“IF”语句要求对象正在观察多个值。这是因为所有的观察代码通过一个方法来指向;

当释放观察者时不需要移除观察者。

delegate、notification、KVO场景差别

标签:

原文地址:http://www.cnblogs.com/lihaiyin/p/4666982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!