KVC是OC特有的,本质是在运行时动态的给对象发送setValue:forKey 消息,设置数值 -调用super.init 保证对象已经被创建完成 .当给对象发送setValue:forKey 消息时要判断对象是否存在key所对应的属性,直接赋值 如果没有就调用undefinedKey(默认崩溃,需要重写)
setValue:forKey的调用顺序首先会寻找set<key>方法,如果没有就去找_<key> _is<Key> <key> is<key> 顺序寻找,如何还没找到就调用undefinedKey(默认崩溃,需要重写).
ValueForKey的调用顺序 按照get<key>, <key> is<key> 顺序寻找,如果没有找到按照_<key> _is<key> <key> is<key>顺序寻找,如何还没找到就调用undefinedKey(默认崩溃,需要重写).
原文:http://www.cnblogs.com/Jusive/p/5084250.html