1、kvc原理:
45页
2、自定义KVO
KVO默认观察setter,使用isa-swizzling来实现自动键值观察,也就是被观察对象的isa会被修改,指向一个动态生成的子类NSKVONotifying_xxxx(isa在移除观察者之后复原,动态生成的类不会被移除),但是通过object_getClass获取的还是原来的类,该子类重写了观察对象的setter方法,还有class、dealloc方法和_isKVOA标识,并在重写setter方法中调用– willChangeValueForKey和– didChangeValueForKey,然后向父类发送消息。如果automaticallyNotifiesObserversForKey返回NO的时候可以手动观察
动态生成子类: NSKVONotifying_xxxx,用原来的类名做后缀
重写观察对象的setter,class、dealloc方法和_isKVOA标识
在重写setter方法中调用 – willChangeValueForKey和 – didChangeValueForKey
向父类发送消息