KVO属于观察者模式的一种机制,Key value observer ,顾名思义,键值观察者,主要功能就是观察某一个对象的属性变化,以便根据对象的变化,做出相应的操作。
1.创建一个项目,然后,创建一个继承自NSObject的类AppStatusWatcher
2.在AppStatusWatcher作为观察者,加入
观察者内部的具体操作,观察到属性变化后,做相应的操作,我们这里只做的打印处理,观察属性变化情况
3.然后在appdelegate引入 观察者这个类 并在appdelegate里面定义两个属性
appStatus作为需要watcher观察的本VC的属性
4 注册观察者,
self.watcher = [AppStatusWatcher new];
[self addObserver:self.watcher forKeyPath:@"appStatus" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"Pass Context"];
self.appStatus = @"launch";
方法里:addObserver为注册观察者,keyPath
option后面是 观察的是啥,如我这里观察的是新旧值
5.2016-07-15 10:44:09.245 KVO机制练习[18101:1212705] Property 'appStatus'of object '' changed:{ kind = 1; new = launch; old = "";},context:Pass Context2016-07-15 10:44:09.249 KVO机制练习[18101:1212705] Property 'appStatus'of object '' changed:{
kind = 1;
new = active;
old = launch;
},context:Pass Context