咱们在上文iOS底层原理之KVO分析(上)中分析了KVO
原理,本文主要是根据KVO
原理自定义KVO
的实现。git
KVO
信息的类定义管理KVO
信息的类,主要包括Observer
、keyPath
、NSKeyValueObservingOptions
以及监听属性变化的回调block
,例如本文以SafeKVOInfoManager
类为管理类,代码以下github
KVO
处理类重点、难点
为了使全部继承于NSObject
类均可以使用咱们自定义的KVO
,KVO
处理类处理成NSObject
的分类。本文以NSObject+SafeKVO
分类做为KVO
处理类`。markdown
NSObject+SafeKVO
分类声明函数safeAddObserver:
函数分析咱们给任意对象添加属性KVO
监听,都须要调用safeAddObserver:
函数函数
judgeSetterMethodFromeKeyPath
函数分析setterForGetter
函数getterForSetter
creatSafeKVONotifingObservingKVOWithKeyPath
分析safe_class
函数分析safe_setter
函数分析safe_dealloc
分析safe_dealloc
运行后结果分析safeRemoveObserver
函数分析safeRemoveObserver
函数能够不一样调用 oop