- setValue:forKey:
- 首先搜索
setKey:方法。
(key指成员变量名,首字母大写)- 上面的setter方法没找到, 如果类方法
accessInstanceVariablesDirectly返回YES。
那么按_key,_isKey,key, iskey的顺序搜索成员名。(NSKeyValueCodingCatogery中实现的类方法,默认实现为返回YES)- 如果没有找到成员变量,调用
setValue:forUnderfinedKey:
- valueForKey:
1.
首先按getKey,key,isKey的顺序查找getter方法,找到直接调用。如果是BOOL、int等内建值类型,会做NSNumber的转换。
2.
上面的getter没找到,查找countOfKey、objectInKeyAtindex、KeyAtindexes格式的方法。如果countOfKey和另外两个方法中的一个找到,那么就会返回一个可以响应NSArray所有方法的代理集合的NSArray消息方法。
3.
还没找到,查找countOfKey、enumeratorOfKey、memberOfKey格式的方法。如果这三个方法都找到,那么就返回一个可以响应NSSet所有方法的代理集合。
4.
还是没找到,如果类方法accessInstanceVariablesDirectly返回YES。那么按_key,_isKey,key,iskey的顺序搜索成员名。
5.
再没找到,调用valueForUndefinedKey。