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:
,抛出异常
网友评论