KVObserver

Platforms SPM compatible License happn

更安全的 KVO。

使用方法

示例

let kvObserver = KVObserver()
let observedObject = ObservedObject()

/* Start observing observedObject */ 
let observingId = kvObserver.observe(object: observedObject, keyPath: #keyPath(ObservedObject.observableProperty), kvoOptions: [.initial], dispatchType: .asyncOnMainQueueDirectInitial, handler: { [weak self] change in
   /* Handle changes here */
})

/* End observing observedObject */ 
kvObserver.stopObserving(id: observingId)
/* Or, stop observing everything */
kvObserver.stopObservingEverything()

有许多可用的调度类型,它们都有细微的差别。通常你只需要默认的类型:.asyncOnMainQueueDirectInitial。 这将同步地调度初始的 KVO 触发(如果存在,即如果设置了 .inital KVO 选项),并在主线程上异步地调度后续的 KVO 触发。

请随意阅读代码以了解其他调度类型!所有类型都有文档说明。 甚至还有专门用于 CoreData 的调度类型。

待办事项

鸣谢

本项目最初由 François Lamboleyhappn 工作时创建。