KVO

作者: 全世界妳最美 | 来源:发表于2018-08-22 15:23 被阅读10次

    1.https://www.jianshu.com/p/e59bb8f59302

    1.KVC 与 KVO 的不同?

    KVC(键值编码),即 Key-Value Coding,一个非正式的 Protocol,使用字符串(键)访问一个对象实例变量的机制。而不是通过调用 Setter、Getter 方法等显式的存取方式去访问。
    KVO(键值监听),即 Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,对象就会接受到通知,前提是执行了 setter 方法、或者使用了 KVC 赋值。

    2.和 notification(通知)的区别?

    notification 比 KVO 多了发送通知的一步。
    两者都是一对多,但是对象之间直接的交互,notification 明显得多,需要notificationCenter 来做为中间交互。而 KVO 如我们介绍的,设置观察者->处理属性变化,至于中间通知这一环,则隐秘多了,只留一句“交由系统通知”,具体的可参照以上实现过程的剖析。

    notification 的优点是监听不局限于属性的变化,还可以对多种多样的状态变化进行监听,监听范围广,例如键盘、前后台等系统通知的使用也更显灵活方便。
    (参照通知机制第五节系统通知名称内容)

    3.与 delegate 的不同?

    和 delegate 一样,KVO 和 NSNotification 的作用都是类与类之间的通信。但是与 delegate 不同的是:
    这两个都是负责发送接收通知,剩下的事情由系统处理,所以不用返回值;而 delegate 则需要通信的对象通过变量(代理)联系;
    delegate 一般是一对一,而这两个可以一对多。

    4.涉及技术:

    KVC/KVO 实现的根本是 Objective-C 的动态性和 Runtime ,以及访问器方法的实现;

    5.缺点:
    钻研kvo的实现可以让我们对苹果的代码实现有更深层次的了解,这些知识涉及到了更深层次的技术,探究它们对我们的开发视野有着很重要的作用。同时,对比其他的回调方式,KVO的实现在创建子类、重写方法等等方面的内存消耗是很巨大的,因此博主更加推荐使用delegate、block等回调方式,
    6.使用 监听属性变化,比如音乐播放器的进度条位置
    https://www.jianshu.com/p/73e407caf89e (监听类的属性)

    相关文章

      网友评论

          本文标题:KVO

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