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

     向父类发送消息

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容