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