先创建一个person类并定义name和sex属性,当person的name或sex属性发生变化时会执行一个action<br><br> /**
* KVO --- Key Value Observe(键值观察者)
* KVO 是一种设计模式,属于观察者设计模式
* 观察者设计模式涉及到以下内容:观察者、被观察者、观察的事项
* 工作原理:观察者 观察 被观察者 指定的属性是否发生变化,一旦发生变化,就执行一个action
* KVO 是基于 KVC 的,通过keyPath指定需要观察的属性
*/
_person = [[Person alloc] init];
// 控制器观察model的变化
// self作为观察者 观察person的name属性的变化
[_person addObserver: self
forKeyPath:@ "name"
options:( NSKeyValueObservingOptionNew
| NSKeyValueObservingOptionOld ) context:Nil];
_person.name = @ "zhangsan" ;
[_person setValue:@ "lisi"
forKey:@ "name" ];
[_person addObserver: self
forKeyPath:@ "sex"
options:( NSKeyValueObservingOptionNew
| NSKeyValueObservingOptionOld ) context:Nil];
_person.sex = @ "nan" ;
/**
* 总结KVO的四个步骤
* 1 [被观察者 addObserver:观察者 forKeyPath:被观察的属性 options:观察设置 context:参数]
* 2 观察者实现 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
* 3 被观察者属性发生变化
* 4 移除观察者
*/
|