iOS底层原理之KVO分析(下)

1,751 阅读1分钟

我们在上文iOS底层原理之KVO分析(上)中分析了KVO原理,本文主要是根据KVO原理自定义KVO的实现。

定义管理KVO信息的类

定义管理KVO信息的类,主要包括ObserverkeyPathNSKeyValueObservingOptions以及监听属性变化的回调block,例如本文以SafeKVOInfoManager类为管理类,代码如下

  • .h代码
  • .m代码

KVO处理类重点、难点

为了使所有继承于NSObject类都可以使用我们自定义的KVOKVO处理类处理成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函数可以不同调用

git项目下载地址