通过KVC修改属性会触发KVO吗
会触发
KVC的赋值和取值过程是怎么样的 原理是什么
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:的原理
setValue:forKey:的原理.pngaccessInstanceVariablesDirectly方法的默认返回值是YES
valueForKey:的原理
valueForKey:的原理.png当没有设置为属性 只是成员变量 直接使用KVC改变值 也会触发KVO 是因为本质上底层是使用了手动触发KVO的方法 willChangeValueForKey didChangeValueForKey
网友评论