上文讲到 iOS KVO 底层实现原理https://www.jianshu.com/p/0aa83ac521ba,大概就是runtime时候动态的创建一个子类,并重写了子类的 setter dealloc class 等方法,将当前类的 isa 指针指向这个子类,这样就不会影响原有类的实现
上图可以看到 KVO内部执行顺序
今天我们就 kvo 内部执行顺序 也通过 runtime 动态创建子类方式去实现.
第一步动态创建一个 NSKVONotifying_Person 子类
/**
运行时动态的创建子类
@param super_cls 父类
@return 返回子类
*/
- (Class) registerSubClassWithSuperClass:(Class)super_cls {
///动态的创建 子类
NSString *clsName = [NSString stringWithFormat:@"NSKVONotifying_%@",super_cls];