ios 通知和代理的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 通知和代理的区别相关的知识,希望对你有一定的参考价值。

区别一:delegate针对one-to-one关系,并且reciever可以返回值给sender;notification 可以针对one-to-one/many/none,reciever无法返回值给sender;所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。
  区别二:
  Delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。
  Notification:
消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。
  区别三:效率肯定是delegate比nsnotification高。
区别四:delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值,也就是delegate方法的结果。
  delegate用于声明委托。Notification用于通告。委托是一种引用类型,引用类型的 Shared 方法或对象的实例方法。任何具有匹配参数类型和返回类型的过程均可用来创建此委托类的实例。然后就可以通过委托实例来调用过程。

以上是关于ios 通知和代理的区别的主要内容,如果未能解决你的问题,请参考以下文章

ios block和delegate的区别

iOS--页面间的代理传值(属性代理(委托)代码块单例通知)

iOS 代理

通知,代理,block 单例的使用和区别

spring aop中this和target区别

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值