KVOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。
KVO 是一个在 MVC(Model-View-Controller)应用程序开发中,用于不同模块间交流的一个很有用的技术。 KVOController 是基于 Cocoa 久经考验的 Key-value Observing 实现(implementation)开发而成的。它提供了一个简单现代的 API,同时也是线程安全的。它有如下优点:
- 使用 Blocks、自定义 Actions 或者 NSKeyValueObserving 回调进行通知.
- 观测者移除时无异常
- 控制器 dealloc 时隐式的观测者移除
- 提升使用 NSKeyValueObservingInitial 的性能
- 线程安全并提供在观测者恢复时额外的保护Thread-safety with special guards against observer resurrection – rdar://15985376.
更多关于 KVO 的信息,可浏览 Apple 的文档:Introduction to Key-Value Observing
用法
项目中有把 KVOController 用于 iOS 和 OS X 的示例程序。这里是一个简单的使用模式:
// create KVO controller with observer
FBKVOController *KVOController = [FBKVOController controllerWithObserver:self];
// observe clock date property
[KVOController observe:clock keyPath:@"date" options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew block:^(ClockView *clockView, Clock *clock, NSDictionary *change) {
// update clock view with new value
clockView.date = change[NSKeyValueChangeNewKey];
}];
尽管上面的例子很简单,但也是一个完整的示范。一个时钟视图创建了一个 KVO 控制器其观察时钟日期的属性。一个代码块回调是用于处理初始化和改变信息推送。在控制器被释放时,KVO 的观察也会无效。
使用要求
KVOController 得益于 Objective-C 技术的发展,包括 ARC 和 weak collections。
它需要:
- iOS 6 +
- OS X 10.7 +
安装
使用 CocoaPods,添加下列代码到项目 Podfile 文件:
pod'KVOController'
更多信息可阅读访问项目主页:https://github.com/facebook/KVOController