1. KVO (Key-Value Observing) 是Cocoa提供的一种基于KVC的机制,允许一个对象去监听另一个对象的某个属性,当该属性改变时系统会去通知监听的对象(不是被监听的对象)。
//1>.添加观察者
//第一个self 代表被观察对象
//第二个self 代表观察者
//KeyPath: 实例变量路径
//options 可选项, 可以添加多个, 重甲用 | 分开
//context 上下文, 可以用来传值
2>. 接受KVO的事件 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context;
3>. 移除观察者 [self removeObserver:self forKeyPath:@"name"];
此外对数组的观察要注意一点, 当你给数组发送addObject:消息时,是不会触发KVO通知的,但是通过mutableArrayValueForKey:这个方法对集合对象进行的相关操作(增加,删除,替换元素)就会触发KVO通知,这个方法会返回一个中间代理对象,这个中间代理对象的类会指向一个中间类,你在这个代理对象上进行的操作最终应在原始对象上造成同样的效果