赋值过程
1.先找相关方法 set<Key>:, _set<Key>:, setIs<Key>:
2.若没有相关方法+ (BOOL)accessInstanceVariablesDirectly,判断是否可以直接方法成员变量
3.如果是判断是NO,直接执行KVC的setValue:forUndefinedKey:(系统抛出一个异常,未定义key)
4.如果是YES,继续找相关变量_<key>, _is<Key>, <key>, is<Key>
方法或成员都不存在,setValue:forUndefinedKey:方法,默认是抛出异常
取值过程
1.先找相关方法 get<Key>, <key>, is<Key>, _<key>, countOfKey & objectInKeyAtIndex
2.若没有相关方法 + (BOOL)accessInstanceVariablesDirectly,判断是否可以直接方法成员变量
3.如果上面的判断是NO, 直接执行KVC的valueForUnderfinedKey:(系统抛出一个异常,未定义key)
4.如果上面的判断是YES, 继续找相关变量_<key>, _is<Key>, <key>, is<Key>
方法或成员都不存在,valueForUndefinedKey:方法 默认抛出异常













网友评论