标签:
KVC:
key value coding,键值编码.是一种通过使用属性的名称(key)来间接访问对象属性的方法.这个方法可以不用通过 setter/getter 方法来访问对象的属性.该方法使用的实质是,是使用 valueForKey来代替 getter 方法, setValueForKey 来代替 setter 方法.
KVC 常用的方法:
- (id)ValueForKey: 通过 key 值读取对象的属性
-(id)setValue: forKey: 通过 key 的值来使用属性
-(id)setNilValueForKey: 将给的 key 字对应的 value 值设置为 nil
-(id)setValueForUndefinedKey: 错误拦截,在 KVC 没有找到 key 值时调用.
KVC 的特点:
键值路径:说白了就是对嵌套比较深的key 取值.主要表现在两个方法之间的区别setValue: forKey: 和 setValue: forKeyPath:
setValue: forKey: 方法,在使用的时候只是在本层中查找 key 值进行赋
setValue: forKeyPath: 方法在使用的时候,根据传进来的 key 值在整个项目中查找.直到查找到该 key 值后对其赋值.
KVC 的缺点
KVC 的实现原理:
KVC 首先根据传入的 anyKey(以此 key 为例)值去查找对象中是否含有anyKey的方法,找到了就直接使用,如果没有找到就继续查找是否含有anyKey的属性,找到的话直接使用,如果没有找到,则试图调用 setValueForUndefineKey,如果该方法没有实现,则会报错.
注: KVC 查找anyKey的方法和属性的时候,不仅仅查找anyKey,还会查找 _anyKey , getAnyKey 和 _getAnyKey
KVO:
Key value observing,键值监听,通俗点说就是当指定的对象的属性改变的时候,对象就会接到通知.也就是说,每次指定的对象发生改变的时候,对应的监听者就会接收到信息.
KVO 的使用原理:
KVO:键值监听.是 cocoa 框架实现的观察者模式,一般和 KVC 搭配使用.通过 KVO 可以监测一个值的变化.是一个一对多的关系,即一个值发生了变化,会通知所有的观察者.
KVO 的使用方法:
标签:
原文地址:http://www.cnblogs.com/xuan-yuan/p/5466908.html