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

posted @ 2020-04-16 10:41  Justin_mr  阅读(187)  评论(0编辑  收藏  举报