代理,block,通知,KVO

代理,block,通知,KVO

代理,block,通知,KVO传递数据都属于回调.

 

什么是回调?

回调是可以传递事件,传值,是某个事件发生之后,能够通知其他类.

 

  • 代理
    • 核心:简单来讲,就是我们不想做的事情,交给别人去做;
    • 代理又叫委托,是一种设计模式,代理是对象与对象之间的通信交互,代理解除了对象之间的耦合性。
    • 举个🌰:那就比如狗狗想要吃饭,就通过(代理)通知主人,主人就会给他做饭,倒水等操作.这些狗狗无需去关心实现的一系列步骤,只要调用delegate(代理人)即可.由代理人完成所需要的操作.
    • 代理的属性常是assign的原因:防止循环引用,以至对象无法得到正确的释放。
    • 特点:
      • 代理是强关联,就是委托和代理者双发互相知道
        • 你委托别人买股票你就需要知道经纪人,经纪人也要知道自己的顾客。
      • 代理使用场景是—行为,需求是比如帮我做事  这种情况我们一般选择代理
    • 总结: 所有代理设计模式,通常发送者和接收者是一一对应关系,目的就是改变或传递控制链,允许一个类在某些特定情时刻通知其他类,而不需要获取其他类的指针,在UIkit中大量使用.

 

  • block
    • block是delegate的另一种形式,是函数编程的一种形式
        • 使用场景和代理一样,相比代理更加灵活,而且比代理的实现更加直观.
  • KVO
    • 就是cocoa框架实现的观察者模式 ,当指定对象的属性被修改后KVO会自动通知相应的观察者..一般与KVC搭配使用.通过KVC可以监测一个值的变化,比如view高度变化,它是一对多的关系,一个值的变化会通知所有的观察者.
    • KVO一般使用场景是—数据: 需求是数据的变化,比如股票价格的变化,我们一般使用KVO  

 

  • NSNotification
    • NSNotification 常用于多传值,当两个对象毫无关联关系时经常使用.  如键盘弹出或隐藏...
    • 通知,一般是进行全局通知,比如股票…好消息发出,通知大家去买入..
    • 通知是弱关联,消息发出,不需要知道是谁发的,也可以做相应的翻译,   同理,发消息的人也不需要知道接收的人 也可以正常发送消息
    • 特点:需要被观察者先主动发出通知,然后观察者注册监听后再进行响应,比KVO多了发送通知这一步,但是其优点是监听不局限于属性的变化. 还可以对多种多样的状态进行监听,监听范围广,使用也更灵活
posted @ 2017-03-06 12:47  Niki~  Views(239)  Comments(0Edit  收藏  举报