第一个参数就是要监听的对象,就是监听谁
第二个参数就是观察者,负责处理监听事件的对象,就是谁监听
第三个参数就是监听对象的属性,就是属性名
第四个参数一般就是NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld
就是发生改变的时候
第五个参数就是传递的数据,属于备用参数
1 | [self.webView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL]; |
然后当参数发生改变的时候就会调用方法
keyPath
就是属性名
可以同时监听多个参数
根据keyPath
可以判断是哪个属性发生改变的然后执行相应的操作
1 | -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context |
最后就是在dealloc
方法里移出KVO
1 | [self.webView removeObserver:self forKeyPath:@"canGoBack"]; |