美文网首页
iOS KVC 和KVO 老生常谈系列(一)

iOS KVC 和KVO 老生常谈系列(一)

作者: iOS开发小学生 | 来源:发表于2019-04-16 11:01 被阅读0次

    首先,给大家讲一下这两个基础知识点的重点。

    1.KVO KVC 没联系
    2.KVC 是键值编码
    2.KVO 是监听属性值的改变
    3.KVO 底层实现原理是系统给当前类创建子类 , 在子类 setter 方法调用父类的 setter 方法
    ***通过修改 isa 指针指向系统创建的子类 实现当前类属性值改变的监听***
    

    一、KVC与KVO

    *“KVC”:key value Coding(键值编码)
    *目的:间接的修改或获取对象的属性,降低程序(类与类)之间的耦合度.
    *“KVO”:key value Observer(键值观察),观察者模式.(检测模型变化用的多)
    *目的:通常用于观察某个对象的某个属性发生变化时,及时做出相应.
    

    二、KVC的使用方式

    KVC被称为iOS开发平台的大招!!! 能快速修改对象属性。
    *[p1setValue:@“xxxx”forKeyPath:@“name”];修改指定对象属性.
    *[arrvalueForKeyPath:@“book.bookName”];  获取对象属性.
    *KVC通过键能直接取得数组.
    *在使用KVC时, 一定要保证键值是存在的.
    *原理: KVC取值时, 如果发现取值的对象不包含指定的键值,会自动进入对象内部成员进行查找.
    

    三、KVO的使用方式

    *KVO通常用于观察”对象某个属性”发生变化时,做出相应的反应.(多用于观察模型数据)
    *KVO和通知中心的一个区别 : KVO只能盯着某个对象(在当前区域内部工作),通知中心可以穿越很多层(如viewController).
    *KVO使用步骤:
    *1.[stuaddObserver:selfforKeyPath:@"name" options:NSKeyValueObservingOptionNew |NSKeyValueObservingOptionOld context:@"myObserver"];
    *2.observeValueForKeyPath.  当指定键值发生改变时, 会自动调用这个方法
    *3.removeObserver. 所有观察者模式的性能都不好,需要及时移除。
    

    相关文章

      网友评论

          本文标题:iOS KVC 和KVO 老生常谈系列(一)

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