美文网首页
3.NSNotification、Delegate、Block和

3.NSNotification、Delegate、Block和

作者: 那抹浮沉 | 来源:发表于2020-07-08 11:40 被阅读0次

    Delegate(代理)是一种回调机制,是一对一的关系
    NSNotification(通知)是基于观察者模式的一对多的关系
    Delegate比NSNotification执行效率高

    Delegate和Block一样,通常也是一对一的通知,使用场景相同,但是Block更加简洁且灵活,不需要像Delegate那样定义很多协议方法,代理对象实现代理方法,还需要建立对象间的代理关系才可以通信。
    在通讯事件较多的情况下,还是建议使用Delegate,Delegate的定义实现形式更加直观

    KVO是Cocoa框架实现的观察者模式,通过KVO可以监测一个值的变化,当值发生变化时,触发监听方法,获取变化前后的值
    KVO和NSNotification某些情况下是一样的,都是状态发生改变后告知对方
    NSNotification的特点是需要被观察者先主动发出通知,然后观察者注册监听后再来进行响应,比KVO多了发送通知的一步,NSNotification不局限于属性,监听范围广,使用更加灵活

    KVO一般使用场景是数据,需求是数据变化,例如股票价格的变化一般使用KVO实现
    Delegate一般的使用场景是行为,需求是需要别人帮我做一件事,如买卖股票一般使用Delegate来实现
    NSNotification一般是进行全局通知,例如好消息一出,通知大家都去买卖

    Delegate是强关联,就是委托和代理双方互相知道对方的信息,
    NSNotification是弱关联,你可以不知道是谁发送的,他也可以不知道都谁接收到了

    相关文章

      网友评论

          本文标题:3.NSNotification、Delegate、Block和

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