测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
授权 | BSD |
发布上次发布 | 2016年9月 |
由 Facebook, Inc.,Nikita Lutsenko 维护。
键值观察(KVO)是 Model-View-Controller 应用中层间通信的一个非常有用的技术。KVOController 构建在 Cocoa 经验证的键值观察实现基础之上。它提供了一个简单、现代的 API,同时还保证了线程安全性。优点包括:
有关 KVO 的更多信息,请参阅 Apple 的 键值观察简介。
项目包含 iOS 和 OS X 的示例应用。以下是一个简单的使用模式
// create KVO controller with observer
FBKVOController *KVOController = [FBKVOController controllerWithObserver:self];
self.KVOController = KVOController;
// observe clock date property
[self.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 控制器来观察时钟日期属性。使用块回调处理初始和变更通知。由于保留了 KVOController
的强引用,因此在控制器 dealloc 时会隐式进行非观察操作。
注意:指定的观察者必须支持弱引用。零化弱引用保护阻止已 dealloc 的观察者实例的通知。
为了更简单的使用,只需 #import <KVOController/NSObject+FBKVOController.h>
,这样就可以在所有对象上自动获取 KVOController
属性。
[self.KVOController observe:clock keyPath:@"date" options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew action:@selector(updateClockWithDateChange:)];
KVOController 利用近年来的 Objective-C 运行时进步,包括 ARC 和弱集合。它需要:
要使用 CocoaPods 进行安装,请将以下内容添加到您的项目 Podfile 中
pod 'KVOController'
或者,将 FBKVOController.h 和 FBKVOController.m 拖放到您的 Xcode 项目中,并在需要时同意复制文件。对于 iOS 应用程序,您可以选择链接 KVOController 项目的静态库目标。
使用 CocoaPods 或 Carthage 安装后,请将以下内容添加到 Objective-C 中的导入
#import <KVOController/KVOController.h>
包含的单元测试使用 CocoaPods 管理依赖项。如果您尚未安装 CocoaPods,请先安装它。然后,在命令行中,进入 KVOController 的根目录,并输入以下内容
pod install
这将安装并添加 OCHamcrest 和 OCMockito 的测试依赖项。重新打开 Xcode 的 KVOController 工作区并进行测试,按⌘U。
KVOController 在 BSD 许可证下发布。有关详细信息,请参阅 LICENSE 文件。