当前位置: 首页 > 工具软件 > KVOController > 使用案例 >

KVOController

匡安宜
2023-12-01

KVO存在的问题

iOS原生KVO有诸多缺点

1. 需要手动在dealloc中移除观察者,否则会crash。重复remove,也会crash

2. 复写的观察者方法。

3. 观察多个对象时,需要在方法中if else判断

4. 通过context判断上下文

KVOController结构

FB开源的KVOController完美的解决了上述的问题

FBKVOController:负责管理Observer(观察者)和Subject(被观察者)。其中lock保证FBKVOController的线程安全

_FBKVOInfo:保存KVO相关的所有信息;keyPath,option,context,_block,state。复写了isEqual:和hash方法,使用keyPath来判断。

_FBKVOSharedController:单例。实现系统KVO的方法,自己作为observer,监听subject,并从FBKVOInfo中取出subject的信息。负责最后的监听的实现


参考:

1. 如何优雅地使用 KVO

2. KVOController代码分析和踩坑



 类似资料:

相关阅读

相关文章

相关问答