黑马程序员技术交流社区

标题: 什么时候用delegate,什么时候用Notification? [打印本页]

作者: 默默者    时间: 2014-4-24 14:00
标题: 什么时候用delegate,什么时候用Notification?
Notification和delegate都可以在两个类之间传递消息,但是在效率和资源占用方面两者有优劣吗?什么时候用delegate,什么时候用Notification?
作者: .Drenched    时间: 2014-4-24 15:34
使用delegate参数更加直观,使用notification参数不那么直观,所以能使用delegate的地方,尽量使用delegate
作者: m573555543    时间: 2014-4-24 18:17
Delegate:
消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。

Notification:
消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。
作者: gaoxinglei123    时间: 2014-4-24 19:09
delegate一对多 效率高 notification 多对多 效率低
作者: 郑亚鸽    时间: 2014-4-24 20:41
1、Delegate是一种点对点的消息传送机制。传递给自己或者其他对象。有时候他还会返回一个影响事件如何被处理的值。
   举一个简单的Mac例子,NSWindow声明了有一个名叫windowShouldClose:的协议,当用户点窗口左上角的关闭按钮时,这个窗口对象就会发送一个windowShouldClose:消息给他的delegate,来询问这个窗口是否可以被关闭。这个delegate会返回一个boolean值,来控制窗口对象的这个(关闭)行为。
2、Notification是一种一对多的消息传递方式。他的实质是广播信息给所有observer。
消息发送者不需要知道谁是消息的接收者。

作者: 魅影穿眸    时间: 2014-4-25 13:14
Delegate是一种点对点的消息传送机制。传递给自己或者其他对象。有时候他还会返回一个影响事件如何被处理的值。
在内存管理环境中,delegate是弱引用。在垃圾回收环境中,delegate是强引用。

Notification是一种一对多的消息传递方式。他的实质是广播信息给所有observer。
消息发送者不需要知道谁是消息的接收者。
他减少了对象之间的依赖。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2