作者 冲破茧缚 2015.08.28 16:12*
写了3967字,被8人关注,获得了14个喜欢
KVC 和 KVO
字数363 阅读32
KVC
- (Key Value Coding),键值编码,通过键值(字符串)来访问属性的机制,来间接修改属性值
- 使用方法
- 赋值
setValue:forKey:
- 例如:
[person setValue:@"Jack" forKey:@"name"];
,执行这个方法时会优先调用setName:方法,如果没有这个方法,则会直接修改name或者_name这个成员变量
- 取值
valueForKey:
- 例如:
id name = [person valueForKey:@"name"];
,执行这个方法时会优先调用name方法,如果没有这个方法,则会直接读取name或者_name这个成员变量
KVO
- (Key Value Observing),监听模型属性值的改变
- KVO是基于Runtime机制实现的
- 当对象执行完addObserver:forKeyPath: options:context:后,系统会在运行期动态创建一个新的子类,并将对象的isa指针指向该类,该类会重写set方法,set方法里面先实现super的set方法,再调用监听器的observeValueForKeyPath: ofObject: change: context:方法通知监听器属性值发生改变
转载于:https://www.cnblogs.com/baiwulong/p/5489593.html