KVO原理

KVO是键值观察机制

当我们给一个属性添加kvo时,假设这个属性是A,这时会动态创建一个新的子类NSKVONotifying_A,重写了setter方法(class方法,dealloc方法),并且指向A的isa指针这时会指向NSKVONotifying_A

(注:重写class方法的愿意是为了隐藏对象真实类信息)

重写监听属性的setter方法,在setter方法内部会调用Foundation的_NSSetObjectValueAndNotify函数

_NSSetObjectValueAndNotify函数内部调用流程

1 首先会调用willChangeValueForKey
2 然后给监听属性赋值
3 最后调用didChangeValueForKey
4 最后调用 observer 的 observeValueForKeyPath去告诉监听器属性值发生了改变

参考地址:https://www.jianshu.com/p/0aa83ac521ba

你可能感兴趣的:(KVO原理)