我们在上文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
函数可以不同调用