KV观察器

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 工作时创建。