KVC-KVO

作者: Aikesi26 | 来源:发表于2018-07-31 16:47 被阅读22次

    1 kvc: 键值编码,一种非正式的协议, 提供了一种机制间接的访问属性. 主要作用是可以通过键值路径对属性赋值和获取属性的值. 常用它来搞系统的类的私有属性.
    作用:
    a. 通过键值路径给属性赋值, 主要是可以给私有属性进行赋值
    b. 通过键值路径获取属性的值, 也可获取私有属性的值
    c. 字典转模型 setValuesForKeyWithDictionary: 这个时候模型对象的属性必须和字典的key一一对应, 否则会报错, 当然我们常用的第三方库还是比较好用的

    2 kvo:监制观察者, 提供了一种观察者机制, 是iOS中对观察者模式的一个典型的体现. 通过对对象的某个属性添加观察者, 当属性值改变的时候就会调用observeValueForKeyPath方法,通知观察者.


    观察者模式: 观察者模式定义了对象之间的一对多的依赖, 这样一来, 当一个对象改变时,它的所有依赖者都会受到通知并自动更新
    观察者模式提供了一种对象设计, 让主题和观察者之间松耦合, 他们依然可以交互, 但是不用清楚彼此的细节, 松耦合的设计让我们建立有弹性的OO系统,能够应对变化, 是因为对象之间彼此依赖降到了最低.

    KVO的底层实现:

    KVO是基与runtime机制实现的,当某个类的对象第一次被观察时,系统就会在运行期动态的创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter方法,派生类在重写的setter方法中实现真正的通知机制, 并且会重写dealloc方法来释放资源.

    相关文章

      网友评论

          本文标题:KVC-KVO

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