KVC
KVC的全称是Key-Value Coding,俗称“键值编码”,可以通过一个key来访问属性
用法
1 | // 常用api |
原理
赋值过程
按照setKey、 _setKey的顺序查找set方法
如果没有找到set方法,则会判断accessInstanceVariablesDirectly方法的返回值,如果返回值为YES则按照***_key、_isKey、key、isKey***的顺序查找成员变量
无论KVC有没有调用set方法(对象内部有没有set方法),KVC都会触发KVO(在KVC内部会调用willChangeValueForKey和didChangeValueForKey,在didChangeValueForKey内部会触发监听方法)。
取值过程
- 按照getKey、 key、 isKey、 _key的顺序查找get方法
- 如果没有找到get方法,则会判断accessInstanceVariablesDirectly方法的返回值,如果返回值为YES,则按照***_key、_isKey、key、isKey***的顺序查找成员变量