KVC的本质

2019-08-08  本文已影响0人  南城同學
方法:

- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (id)valueForKey:(NSString *)key;

key和keyPath的区别:

-key只能放当前对象的属性,如:“age”
-keyPath可以路径,如:“student.age”


setValue:forKey: 赋值的原理
赋值查找.png
value:forKey: 获取值的原理
取值查找.png
扩展

1、通过KVC修改属性,会触发KVO吗?

原理:
[person setValue:@10 forKey:@"age"]的底层实现:

didChangeValueForKey:内部会调用observer的observeValueForKeyPath:ofObject:change:context:方法,即:KVO。

上一篇 下一篇

猜你喜欢

热点阅读