我们在上文iOS底层原理之KVO分析(上)中分析了KVO原理,本文主要是根据KVO原理自定义KVO的实现。
定义管理KVO信息的类
定义管理KVO信息的类,主要包括Observer、keyPath、NSKeyValueObservingOptions以及监听属性变化的回调block,例如本文以SafeKVOInfoManager类为管理类,代码如下
- .h代码
- .m代码
KVO处理类重点、难点
为了使所有继承于NSObject类都可以使用我们自定义的KVO,KVO处理类处理成NSObject的分类。本文以NSObject+SafeKVO分类作为KVO处理类`。
NSObject+SafeKVO分类声明函数
safeAddObserver:函数分析
我们给任意对象添加属性KVO监听,都需要调用safeAddObserver:函数
judgeSetterMethodFromeKeyPath函数分析
setterForGetter函数
同样也有从setter方法获取getter方法的getterForSetter
派生类函数creatSafeKVONotifingObservingKVOWithKeyPath分析
safe_class函数分析
safe_setter函数分析
safe_dealloc分析
safe_dealloc运行后结果分析
safeRemoveObserver函数分析
safeRemoveObserver函数可以不同调用