美文网首页
代理、Block、通知、KVO

代理、Block、通知、KVO

作者: my__life | 来源:发表于2016-06-09 21:43 被阅读258次

1.代理
代理是:。

2.Block
delegate和block的作用都是用于两个类之间的回传数据,即当一个类创建了另一个类的实例的时候,想从被创建的类传递信息到创建它的类(例:比较常见的是,tableview类中创建的cell类想将cell类的事件传递到tableview类,例2:修改信息的页面,比如修改用户名是点击用户名回到下一级页面修改,修改后返回到本级。也要用的数据的回传)。
a、delegate和block的差别:
1、delegate运行成本低。block成本很高的。
block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,使用完或者block置nil后才消除;delegate只是保存了一个对象指针,直接回调,没有额外消耗。相对C的函数指针,只多做了一个查表动作 。

3.代理和Block的区别:http://www.jianshu.com/p/4e829fa34494

4.通知;
它是一个单例对象,允许当事件发生时通知一些对象。它允许我们在低程度耦合的情况下,满足控制器与一个任意的对象进行通信的目的。这种模式的基本特征是为了让其他的对象能够接收到在该controller中发生某种事件而产生的消息,controller用一个key(通知名称)。这样对于controller来说是匿名的,其他的使用同样的key来注册了该通知的对象(即观察者)能够对通知的事件作出反应。

优势:1.不需要编写多少代码,实现比较简单;2.对于一个发出的通知,多个对象能够做出反应,即1对多的方式实现简单

缺点:1.在编译期不会检查通知是否能够被观察者正确的处理;
2.通知发出后,controller不能从观察者获得任何的反馈信息。
3.在释放注册的对象时,需要在通知中心取消注册;
4.在调试的时候应用的工作以及控制过程难跟踪;

5.代理和通知:
我个人不是很喜欢使用通知中心。我发现用通知中心很难把握应用的执行流程。UserInfo dictionaries的keys到处传递导致失去了同步,而且在公共空间需要定义太多的常量。对于一个工作于现有的项目的开发者来说,如果过分的使用通知中心,那么很难理解应用的流程。
我觉得使用命名规则好的协议和协议方法定义对于清晰的理解controllers间的通信是很容易的。努力的定义这些协议方法将增强代码的可读性,以及更好的跟踪你的app。
当然会有delegation模式不适合的例外情况出现,而且notification可能更加有效。例如:应用中所有的controller需要知道一个事件。然而这些类型的场景很少出现。另外一个例子是当你建立了一个架构而且需要通知该事件给正在运行中应用。
根据经验,如果是属性层的时间,不管是在不需要编程的对象还是在紧紧绑定一个view对象的model对象,我只使用观察。

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

相关文章

  • OC 底层(KVC、KVO、Delegate、Category、

    目录 1.KVC2.KVO3.通知4.代理、委托、协议5.Block、KVO、通知、代理之间的区别6.分类 Cat...

  • 代理/通知/block/KVO

    代理: 第一就是代理,这也是很常用的方式,特点是一对一的形式,而且逻辑结构非常清晰。实现起来较为简单:1.声明协议...

  • 代理/通知/block/KVO

    代理: 代理是 iOS 很常用的方式,它的特点就是一对一的形式,并且它的逻辑结构非常的清晰。实现起来也是比较简单的...

  • 代理、Block、通知、KVO

    1.代理代理是:。 2.Blockdelegate和block的作用都是用于两个类之间的回传数据,即当一个类创建了...

  • iOS面试(2)-设计模式

    一、MVC、MVP、MVVM、RAC 二、单例、工厂、KVC、KVO 三、通知、代理、Block

  • RAC

    代理、通知、block、kvo、Target都属于响应式编程 ReactiveObjc和通知有点像,但是RAC里创...

  • React-Native 与原生代码之间的事件传递

    熟悉 iOS 的同学都知道,controller 之间的事件传递有多种: 代理 block 通知 KVO 那么 R...

  • ReactiveCocoa基础篇

    ReactiveCocoa简介 使用了函数响应式编程思想 使用了HOOK思想 统一了代理,通知,Block,KVO...

  • ios开发中使用RAC代替block传值

    RAC可以实现KVO、代理、通知、block的功能,可谓集多功能于一身。本篇文章介绍RAC是如何代替block传值...

  • iOS--开发中的六大传值(OC中的常用传值)

    六大传值--(属性/代理/通知/KVO/KVC/Tag/单例/Block/全局) 先创建两个ViewControl...

网友评论

      本文标题:代理、Block、通知、KVO

      本文链接:https://www.haomeiwen.com/subject/sutsdttx.html