一、KVC的赋值顺序
- KVC在调用setValue:forKey:时候,赋值的顺序是
- 先去寻找方法
- setKey:
- _setKey:
- 如果方法不存在:
- 会调用accessInstanceVariablesDirectly方法、如果该方法返回NO则抛出错误
- 如果返回YES 继续查找实例变量
- _key , _isKey , key, isKey
- 先去寻找方法
二、KVC的取值顺序
KVC在调用valueForKey:时候,取值的顺序是
-
先去寻找方法
- getKey
- key
- isKey
- _key
如果方法不存在:
会调用accessInstanceVariablesDirectly方法、如果该方法返回NO则抛出错误
-
如果返回YES 继续查找实例变量
- _key , _isKey , key, isKey
KVC的原理基本就是这样,如有不足之处还请各位大神不吝赐教,不胜感激!!!