iOS 深入理解KVO底层实现原理

    技术2022-07-10  128

    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 处理一些释放内存工作

    下面是具体的代码分析:

    Processed: 0.031, SQL: 9