KVC 赋值过程、取值过程

赋值过程

1.先找相关方法 set<Key>:, _set<Key>:, setIs<Key>:
2.若没有相关方法+ (BOOL)accessInstanceVariablesDirectly,判断是否可以直接方法成员变量
3.如果是判断是NO,直接执行KVCsetValue: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:方法 默认抛出异常

官方文档解释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容