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 处理一些释放内存工作
下面是具体的代码分析: