KVO
- kvo 全称是Key-Value Observing 俗称键值监听,可以用来监听一个对象属性值的改变。
未使用KVO监听
使用了KVO监听
NSSetValueAndNOtify的内部实现
[self willChangeValueForkey:@"age"];
//原来的setter实现
[self didChangeValueForkey:@"age"];
调用willChangeValueForKey;
调用原来的setter实现
调用didChangeValueForKey;
didChangeValueForKey:回调用observer的observerValueForKeyPath:ofObject:change:context方法。
KVC
KVC 全称是Key-Value Coding,俗称键值编码,可以赢一个key来访问属性。
常见的API
-(void)setValue:(id)value forKeyPath:(NSString*)keyPath;
-(void)setValue:(id)value forKey:(NSString*)key;
-(id)valueForKeyPath:(NSString*)keyPath;
-(id)valueForKey:(NSString*)key;
-
setValue:forkey:的原理
accessInstanceVariablesDirectly 方法返回默认值为YES
-
valueForKey:的原理