KVO的底层实现

在属性第一次添加观察者的时候,运行期系统会动态的给类创建一个派生类,名称以NSKVONotifying_开头,在这个子类中会重写被观察属性的setter方法。类的isa指针也会指向这个派生类。键值观察依赖于NSObject的两个方法:
willChangeValueForKey:和didChangeValueForKey:属性改变之前会调用willChangeValueForKey:,属性改变之后会调用didChangeValueForKey,继而调用observeValueForKey: ofObject: change: context:

你可能感兴趣的:(KVO的底层实现)