delegate针对one-to-one关系,并且reciever可以返回值给sender;

notification 可以针对one-to-one/many/none,reciever无法返回值给sender;

所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。

delegate主动,notification被动

1.

Delegate:
消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。

Notification:
消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。

2.

很早stepwise上有一篇很经典的文章抓没讲delegate和notificationde的区别的,不过很遗憾现在stepwise下线了。
简单说,
1. 效率肯定是delegate比nsnotification高。
2. delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值,也就是delegate方法的结果。比如-windowShouldClose:,需要关心返回的是yes还是no。所以delegate方法往往包含should这个很传神的词。也就是好比你做我的delegate,我会问你我想关闭窗口你愿意吗?你需要给我一个答案,我根据你的答案来决定如何做下一步。相反的,notification最大的特色就是不关心接受者的态度,我只管把通告放出来,你接受不接受就是你的事情,同时我也不关心结果。所以notification往往用did这个词汇,比如NSWindowDidResizeNotification,那么nswindow对象放出这个notification后就什么都不管了也不会等待接受者的反应。

最新文章

  1. Memcached和Redis比较
  2. css学习笔记 3
  3. Ubuntu命令--CURL用法
  4. 刚刚学了循环,1到n的求和与阶乘
  5. erlang代码片段
  6. CMD删除Mysql 服务
  7. 阻止文件不被上传到iCloud-b
  8. HTTPS证书生成原理和部署细节
  9. SAN简介
  10. Chrome应用技巧之代码整理。
  11. FZU 2167 大王叫我来巡山呐
  12. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
  13. ●BZOJ 1499 [NOI2005]瑰丽华尔兹
  14. Java基础:内存模型
  15. isolate demo
  16. Python脱产8期 Day08 2019/4/22
  17. ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解
  18. linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
  19. C#_从DataTable中检索信息
  20. canvas 实现微信小游戏

热门文章

  1. (转)PHP 函数的实现原理及性能分析
  2. [Angular Directive] Write a Structural Directive in Angular 2
  3. Android JNI编程(二)——C语言的基本数据类型,输出函数,输入函数
  4. .Net Core身份认证:IdentityServer4实现OAuth 2.0 客户端模式 - 简书
  5. 删除vector中的重复数据(unique)
  6. 【u021】广义斐波那契数列
  7. JSON 表达式
  8. C 语言 —— ! 和 ~(感叹号和波浪号)
  9. database software runInstaller无法看到全部的rac节点的处理方法
  10. 利用marquee对html页面文本滚动