KVC(Key-value coding)键值编码 主要是键子对问题
常用方法 valueForKey valueForKeyPath
valueForKey 和 valueForKeyPath主要区别是 valueForKeyPath支持点方法的调用
1 关于KVC valueForKey:key 通过Key调用 访问的调用方法顺序
首先会查找get方法 get方法主要有三个 getKey > key > isKey
另外还有几个集合的方法 具体如下:
getter 方法 getKey(注意Key的首字母大写) ->key ->isKey
NSArry 方法:countOfKey 和objectInKeyAtIndex
NSSet 方法----
2 如果没有相关get方法 也没有那几个集合的方法 首先看 + (BOOL)accessInstanceVariablesDirectly 是否同意访问成员变量的那个方法 如果返回yes
则一次 寻找 _name > _isName > name > isName的属性变量
返回 NO valueForUndefineKey 并且崩溃
如果拒绝崩溃 或者说 在找不到Key 情况下需要设置默认值 则重写- (id)valueForUndefinedKey:(NSString *)key
具体如下:
如果没有相关方法的get的方法
看 + (BOOL)accessInstanceVariablesDirectly 的返回值
是 YES 找成员变量 先后顺序 _name > _isName > name > isName
是 NO 则为异常 valueForUndefineKey
重写 valueForUndefinedKey 防止KVC使用过程中的崩溃
- (id)valueForUndefinedKey:(NSString *)key
3 KVC的作用一方面用于数据解析 一方面访问系统对象的属性
网友评论