当一个对象对观察时,系统会创建一个子类NSNotifying_A, 在子类中重写了对象被观察属性的set方法,并改变了该对象的isa指针的指向(指向了创建的子类),当属性的值发生改变,会调用子类的set方法,发出通知。
一、KVO的基本使用
给_person对象 添加观察者, 当person对象的name的值发生改变的时候, 会触发observer方法。
二、当keyPath为对象时,需要监听对象的属性比较多
三. 手动触发KVO
系统默认该对象的所有属性 都能被观察到 ,重写下面方法, 可以单独设置某个属性不能被观察
四. 自定义KVO
根据kvo的原理, 可以自定义一个kvo, 建一个NSObject的分类, 添加方法
通过runtime的方式, 动态创建一个类, 并给该类添加方法
五. 其他
关于容器类(如:NSMutableArray)的观察, 当通过addObject: 向数组中添加对象, 不会触发KVO, 因为并没有触发set方法,
解决方法: 通过KVC 方法 - mutableArrayValueForKey: