三种通信方式

                   三种通信方式:

delegat:

—>基本特征是,一个controller定义了一个协议(即一系列的方法定义)。

delegate的优势:

1.非常严格的语法。所有将听到的事件必须是在delegate协议中有清晰的定义。

2.如果delegate中的一个方法没有实现那么就会出现编译警告/错误

3.协议必须在controller的作用域范围内定义

4.在一个应用中的控制流程是可跟踪的并且是可识别的

5.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegates

6.没有第三方对象要求保持/监视通信过程

7.能够接收调用的协议方法的返回值。这意味着delegate能够提供反馈信息给controller

缺点:

1.需要定义很多代码:1.协议定义;2.controller的delegate属性;3.在delegate本身中实现delegate方法定义

Notification:

它是一个单例对象,允许当事件发生时通知一些对象。

优势:

1.不需要编写多少代码,实现比较简单;

2.对于一个发出的通知,多个对象能够做出反应,即1对多的方式实现简单

3.controller能够传递context对象(dictionary),context对象携带了关于发送通知的自定义的信息

缺点:

1.在编译期不会检查通知是否能够被观察者正确的处理;

2.在释放注册的对象时,需要在通知中心取消注册

KVO:

是一个对象能够观察另外一个对象的属性的值,并且能够发现值的变化。

KVO是一个对象能够观察另外一个对象的属性的值,并且能够发现值的变化

它只能用来对属性作出反应,而不会用来对方法或者动作作出反应。

优点:

1.能够提供一种简单的方法实现两个对象间的同步。例如:model和view之间同步;2.能够对非我们创建的对象,即内部对象的状态改变作出响应,而且不需要改变内部对象(SKD对象)的实现

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

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,731评论 30 472
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,080评论 19 139
  • 37.cocoa内存管理规则 1)当你使用new,alloc或copy方法创建一个对象时,该对象的保留计数器值为1...
    如风家的秘密阅读 972评论 0 4
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,531评论 1 23
  • 莫被仇恨蒙蔽了眼,把自己的人生变得狭隘。自己要好好去探索,能得到的就得到,要好好享受自己能享受得到的。如果一生真的...
    匡小妹阅读 108评论 0 0

友情链接更多精彩内容