KVC与KVO

KVC键值编码是一种间接访问对象属性的机制。使用该机制不需要调用getter 和setter 方法

它是通过setValue:forkey: 和valueForKey方法来访问的

KVC的机制:是以字符串的形式向对象发送消息,字符串是要关注属性的key

KVC的优点:减少代码量,非property申明的变量也可以使用

KVC的缺点:太过依赖于字符串,如果字符串写错,就会出现 bug。

                  =============我是分割线===============

KVO 键值观察机制一个对象能够观察另一个对象的属性值,能够发现值的变化并且做出相应的动作。

KVO适用于任何类的对象侦听另一个对象的改变,简单来说就是一个对象根据另一个对象的变化同步更新。但是他只能对属性作出反应,不能对方法做出反应。

KVO优点:能够提供一种简单的方法实现简单的两个对象的同步

能够对非程序猿创建的对象进行侦听,并且不改变原有对象。

能够提供观察属性的最新值以及先前值

用keyPaths来观察属性,因此也可以嵌套属性

KVO缺点:被观察的属性必须使用string定义,因此编译器不会出现警告以及检查。

属性重构导致观察代码不可用

注意:但冲的改变属性值而不调用setter,getter来改变值是不会出发KVO的

被观察者:调用 addObserver:forKeyPath:options:context:  来添加观察者

观察者:observeValueForKeyPath:ofObject:change:context:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KVC 什么是 KVC KVC 是 Key-Value-Coding 的简称。 KVC 是一种可以直接通过字符串的...
    LeeJay阅读 2,225评论 6 41
  • KVC 与 KVO 无疑是 Cocoa 提供给我们的一个非常强大的特性,使用熟练可以让我们的代码变得非常简洁并且易...
    SwiftCafe阅读 1,895评论 3 14
  • KVC、KVO概述 KVC(NSKeyValueCoding) "键-值 编码"是一种间接访问对象的属性的机制...
    Joker_King阅读 1,044评论 1 4
  • KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解。 Key-Va...
    韩七夏阅读 242评论 0 1
  • 回家了!浴缸和床垫啊啊啊啊!! 休息!不要早起了!
    SX阅读 141评论 0 1