KVC(key-value-coding,键值编码)
KVC是一种通过字符串去间接操作对象属性的一种机制,例如,访问一个对象的属性person.age时。使用KVC的方式:
[person valueforkey:@"age"];
KVC为OC语言动态运行时机制的一种体现,任何NSObject类型的对象都支持kvc。
KVO(key-value-observer)
KVO就是在一个语言框架层面实现的观察者模式,通过KVC的方式去改变属性时,会主动通知观察者,对符合kvc键值编码的变量的观察,主要对变量赋值操作的观察
[_model addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
//键值观察者要实现的函数
//第一个参数 就是监听的 对象属性名
//第二个参数 监听的对象
//第三个参数 改变的内容 如果设置过NSKeyValueObservingOptionNew 就可以获取对象属性的新值
//如果设置NSKeyValueObservingOptionOld 可以获取对象属性的旧值
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
}