-
Key-Value-Coding
键值编码
可以通过一个Key来访问摸个属性。
常见的API:
setValue:forKeyPath:setValue:forKey:valueForKeyPath:valueForKey:
-
实现原理
-
setValue:forKey:- 通过key 按照
setKey: 、_setKey:的顺序查找方法。- 未查到,询问是否可以直接访问成员变量
accessInstanceVariablesDirectly:默认返回YES。- 返回
YES。 按照setKey: 、_setKey:的顺序查找方法修改成员变量。 - 返回
NO。 调用setValue:forUndefinedKey:方法报错。
- 返回
- 未查到,询问是否可以直接访问成员变量
- 查到后直接调用。
- 通过key 按照
-
valueForKey:- 通过key 按照
getKey: 、key: 、_Key: 、_isKey:的顺序查找方法。- 未查到,询问是否可以直接访问成员变量
accessInstanceVariablesDirectly:默认返回YES。- 返回
YES。 按照getKey: 、key: 、_Key: 、_isKey:的顺序查找方法取值。 - 返回
NO。 调用setValue:forUndefinedKey:方法报错。
- 返回
- 未查到,询问是否可以直接访问成员变量
- 查到后直接调用。
- 通过key 按照
-