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