- シンプルで、モダンなkey value observingが行える
メリット
- ブロックで書けるので、コードが読みやすくなる
- observerの削除のときにexceptionが起きない
- observerの削除はFBKVOControllerのdelloc時に呼ばれる
使い方
// 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];
}];
- 実際にはviewやcontrollerのdelloc時に呼ぶために以下のように書く
// Observer with KVO controller instance variable
@implementation ClockView
{
FBKVOController *_KVOController;
}
- (id)init
{
...
// create KVO controller with observer
FBKVOController *KVOController = [FBKVOController controllerWithObserver:self];
// add strong reference from observer to KVO controller
_KVOController = KVOController;
インストール
pod 'KVOController'
参考