KVC/ KVO

1、kvc原理:

45页

2、自定义KVO

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

     向父类发送消息

你可能感兴趣的:(KVC/ KVO)