KVC是一种访问一个对象属性的方法 即是指NSKeyValueCoding
访问一个对象属性我们可以 person.age 也可以通过kvc的方式 [person valueForKey:@"age"]; 假如给出的字符串没有对象的属性 会访问valueForUndefineKey方法 默认实现是raise 一个异常 但你可以重写这个方法, setValue的时候也是一样的道理,当然KVC只是这么简单它还有keypath方法
key 与 key pat 要区分开来,key 可以从一个对象中获取值,而 key path 可以将多个 key 用点号 “.” 分割连接起来,比如:
[p valueForKeyPath:@"spouse.name"];
相当于这样……
[[p valueForKey:@"spouse"] valueForKey:@"name"];
KVO 就是基于 KVC 实现的关键技术之一,它的实现原理就是,当对象的属性被修改时候,KVO就会自动向所有实施监听的对象发送一个通知