KVO的本质

KVO的本质:
本质是重写set方法。

1、利用Runtime API 动态生成一个全新的子类,并且让instance对象的isa指向这个全新的子类;
2、当修改instance对象的属性时,会调用Foundation的_NSSetXXXValueAndNotify函数;

函数内部实现:
  • - willChangeValueForKey:
  • 父类原来的setter
  • - didChangeValueForKey:
didChangeValueForKey:
  • 内部会触发监听器(Oberser)的监听方法( observeValueForKeyPath:ofObject:change:context:

扩展:

如何手动触发KVO

  • 手动调用willChangeValueForKey:didChangeValueForKey:

你可能感兴趣的:(KVO的本质)