美文网首页
简单区分下delegate. NSNotifiction. Bl

简单区分下delegate. NSNotifiction. Bl

作者: Nicole__Zhang | 来源:发表于2017-06-08 09:02 被阅读21次
    代理

    代理是一对一的关系.
    delegate 需要定义协议方法并且实现协议方法,会使代码结构变复杂.
    delegate 的执行效率没有Block的高.

    Bloc

    代码结构更加紧凑,不需要额外定义方法.
    需要注意防止循环引用,使用__weak关键字修饰.
    如果需要在块中修改外部变量时,需要对外部变量使用__block关键词修饰.

    NSNotifiction

    NSNotifiction是通知,是一对多的使用场景.
    在某些情况下KVO和NSNotifiction是一样的,都是状态变化之后告知对方.
    NSNotifiction的特点是,就是需要 被观察者先主动发出通知,然后观察者注册监听后再来进行响应,比KVO多了发送通知的一步,但其优点是监听不局限于属性的变化,还可以对多种多样的状态 变化进行监听 ,监听范围广,使用也更灵活.

    KVO

    KVO就是cocoa框架实现的观察者模式,一般同KVC搭配使用,通过KVO可以监测一个值的变化:如view的高度变化 .
    是一对多的关系,一个值的变化会通知所有的观察者.
    如果需要在块中修改外部变量时,需要对外部变量使用__block关键词修饰.

    相关文章

      网友评论

          本文标题:简单区分下delegate. NSNotifiction. Bl

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