iOS开发 - delegate 和 Notification 的区别

区别一:

delegate:
针对one-to-one(一对一)关系,并且接收者(receiver)可以返回值给发送者(sender);
Notification:
可以针对one-to-one/many/none,reciever无法返回值给发送者(sender);

所以,delegate用于发送者(sender)希望接受到接收者(receiver)的某个功能反馈值,Notification用于通知多个object某个事件。

区别二:

delegate:
消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。  
Notification:
消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。

区别三:

效率肯定是delegateNotification高。

区别四:

delegate方法比Notification更加直接,最典型的特征是,delegate方法往往需要关注返回值,也就是delegate方法的结果。 
delegate用于声明委托。Notification用于通告。
委托是一种引用类型,引用类型的 Shared 方法或对象的实例方法。任何具有匹配参数类型和返回类型的过程均可用来创建此委托类的实例。然后就可以通过委托实例来调用过程。


GitHub: https://github.com/LiCheng244/LCUtils
个人博客: http://www.licheng244.com/


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,897评论 1 32
  • 1.Difference between shallow copy and deep copy? 浅复制和深复制的...
    用心在飞阅读 4,619评论 0 9
  • 37.cocoa内存管理规则 1)当你使用new,alloc或copy方法创建一个对象时,该对象的保留计数器值为1...
    如风家的秘密阅读 4,390评论 0 4
  • 区别一:delegate针对one-to-one关系,并且reciever可以返回值给sender;notific...
    Skipper_1_422阅读 3,895评论 0 0
  • 合肥 这个城市不好 房价高 污染强 幸福指数呵呵笑 合肥 这个城市不好 富好炫 穷麻烦 人民素质交通显 合肥 这个...
    一度一阅读 1,459评论 0 0

友情链接更多精彩内容