当前位置: 代码迷 >> 综合 >> KVO的实现原理
  详细解决方案

KVO的实现原理

热度:10   发布时间:2024-02-21 15:28:34.0

KVO是基于RunTime机制实现的

当我们为一个属性添加观察者模式之后,系统会利用RunTime动态创建一个继承于属性所在类的子类 "NSKVONotifying_XXX" ,XXX为类名,并且让实例对象的isa指向这个全新的子类,当修改实例对象时,会调用Foundation框架的_NSSetXXXValueAndNotify函数,在_NSSetXXXValueAndNotify内部会调用

willChangeValueForKey: 

父类原来的setter方法进行修改 ([super setXXX:])

didChangeValueForKey:  内部会触发监听器的监听方法 (observeValueForKeyPath:ofObject:change:content:)

  相关解决方案