使用 KVC 为对象赋值或者取值时,不需要知道准确的键值。
注册KVO的时候,要观察哪个属性,在调用注册方法的时候,addObserver:forKey:options:context: forKey处填写的属性是以字符串形式,万一属性名字写错,因为是字符串,编译器也不会出现警告以及检查。
KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。
KVC的机制是以字符串的形式向对象发送消息字符串是要关注属性的关键。是否存在setter,getter方法,如果不存在,它将在内部查找名为_key或key的实例变量,如果没有会调用setValueForUndefindedKey:,如果也没有,则会运行时报错。