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: