KVC的内部实现机制

2019-05-06  本文已影响0人  DL是谁

KVO的setValue:forKey原理
1、按照setKey_setKey的顺序查找成员方法,如果找到方法,传递参数,调用方法
2、如果没有找到,查看accessInstanceVariablesDirectly的返回值(accessInstanceVariablesDirectly的返回值默认是YES),
返回值为YES,按照_Key,_isKey的顺序查找成员变量,如果找到,直接赋值,如果没有找到,调用setValue:forUndefinedKey:,抛出异常
返回NO,直接调用setValue:forUndefinedKey:,抛出异常

KVO的ValueforKey原理
1、按照getKey,key,isKey,_key的顺序查找成员方法,如果找到直接调用取值
2、如果没有找到,查看accessInstanceVariablesDirectly的返回值
返回值为YES,按照_Key,_isKey,Key,isKey的顺序查找成员变量,如果找到,直接取值,如果没有找到,调用setValue:forUndefinedKey:,抛出异常
返回NO,直接调用setValue:forUndefinedKey:,抛出异常

上一篇 下一篇

猜你喜欢

热点阅读