xgao

 定义

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

 这个方法有个应用场所就是如果你自己写框架,你的一些私有的变量不想被外部通过KVC的方式去修改,就可以重写这个方法,返回 NO 即可!

valueForKey:的原理

 

 

通过KVC修改属性值或者成员变量值会触发KVO吗? 

 答案是肯定可以的。因为无论你对象有没有set方法,KVC底层都会调用 willChangeValueForKey 和 didChangeValueForKey,上一篇我们说过只要手动调用这两个方法,KVC就会被调用。

 

相关文章: