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/


你可能感兴趣的:(iOS开发 - delegate 和 Notification 的区别)