KVO底层实现原理

1.当某个类的对象第一次被观察后,系统会通过Runtime动态的创建一个派生类,继承原始类,如原始类为Member,则派生类为NSKVONotify_Member.

    在添加观察之前派生类为NSKVONotify_Member的isa指针指向了原始类Member。实际上是重写了class方法来runtime该对象是属于那个类。

2.派生类为NSKVONotify_Member重写原始类的四个方法

    setter 用于通知观察者值已经发生改变

    class 返回值为原始类  return class_getSuperclass(object_getClass(self))

    _isKVOA 私有方法_isKVOA 是用来标示该类是一个KVO 机制声称的类

    dealloc 处理一些释放内存工作

下面是具体的代码分析:

KVO底层实现原理

KVO底层实现原理

KVO底层实现原理

KVO底层实现原理

KVO底层实现原理