KVOController 是一個簡單安全的 KVO(Key-value Observing,鍵-值 觀察)工具,用於 iOS 和 OS X 應用開發中,開源自 facebook。html
KVO 是一個在 MVC(Model-View-Controller)應用程序開發中,用於不一樣模塊間交流的一個頗有用的技術。 KVOController 是基於 Cocoa 久經考驗的 Key-value Observing 實現(implementation)開發而成的。它提供了一個簡單現代的 API,同時也是線程安全的。它有以下優勢:git
更多關於 KVO 的信息,可瀏覽 Apple 的文檔:Introduction to Key-Value Observinggithub
項目中有把 KVOController 用於 iOS 和 OS X 的示例程序。這裏是一個簡單的使用模式:segmentfault
// 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。
它須要:app
使用 CocoaPods,添加下列代碼到項目 Podfile 文件:工具
pod 'KVOController'
更多信息可閱讀訪問項目主頁:https://github.com/facebook/KVOController性能
編譯:Segmentfault線程