KVC面试题

KVC是key-value coding,键值编码技术

2个方法

是否违背面向对象?

会 因为知道私有key就可以赋值

valueForKey系统流程

valueForKey先找是否实现访问器方法,找到就走调用流程,没找到就找实例变量是否存在,可以根据- (BOOL)accessInstanceVariablesDirectly改变其值,默认YES,走调用流程,如果设置NO或者找不到对应的key,走valueForUndefinedKey 抛出一个未定义key错误NSUndefinedKeyException结束流程。

setValue forKey流程

先找setter方法是否存在 再找实例变量是否存在,- (BOOL)accessInstanceVariablesDirectly可以改变

实例变量不存在 调用setValue forUndefinedKey: 抛出NSUndefinedKeyException 结束流程

访问器方法是否存在的判断?

方法名:getKey

方法名:key

方法名:isKey

实例变量是否存在的判断?

成员变量:_key  _isKey  

成员变量:key  isKey

原文地址:https://www.cnblogs.com/WellLin/p/12711090.html