KVOController:facebook 開源的 KVO(Key-value Observing)工具

KVOController 是一個簡單安全的 KVO(Key-value Observing,鍵-值 觀察)工具,用於 iOS 和 OS X 應用開發中,開源自 facebook。html

KVO 是一個在 MVC(Model-View-Controller)應用程序開發中,用於不一樣模塊間交流的一個頗有用的技術。 KVOController 是基於 Cocoa 久經考驗的 Key-value Observing 實現(implementation)開發而成的。它提供了一個簡單現代的 API,同時也是線程安全的。它有以下優勢:git

  • 使用 Blocks、自定義 Actions 或者 NSKeyValueObserving 回調進行通知.
  • 觀測者移除時無異常
  • 控制器 dealloc 時隱式的觀測者移除
  • 提高使用 NSKeyValueObservingInitial 的性能
  • 線程安全並提供在觀測者恢復時額外的保護Thread-safety with special guards against observer resurrection – rdar://15985376.

更多關於 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

  • iOS 6 +
  • OS X 10.7 +

安裝

使用 CocoaPods,添加下列代碼到項目 Podfile 文件:工具

pod 'KVOController'

更多信息可閱讀訪問項目主頁:https://github.com/facebook/KVOController性能


編譯:Segmentfault線程

相關文章
相關標籤/搜索