KVO的底层原理
2017-10-12 本文已影响0人
define南拳
Key-Value Observing 键值对观察者模式
基于OC强大的Runtime机制和isa-swizzle机制、考虑到OC的对象存储方式和类存储方式
OC在底层实现了KVO的这种观察者模式,开发者可以在不修改某个类A的情况下,很轻易的实现对A的某个对象中任意属性的监视

运行过程中,当观察者对象对被监听者进行监听的时候,系统自动为被监听类创建一个临时的
派生类,并在派生类中重写setter方法,增加willChangeValueForKey和didChangeValueForKey
在will中保存历史值,在did中保存修改后的值,并通知所有的观察者对象
动态性导致宏定义不会影响到编译后的包大小,没有import的文件也会被