FBKVOController是Facebook开源框架(https://github.com/facebook/KVOController)。解决使用系统kvo一些常见问题:
- 需要适时的移除观察者。
- 需要重写- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSKeyValueChangeKey, id> *)change context:(nullable void *)context方法。
- 如果有多个观察者需要if判断。
FBKVOController使用很方便:
- 支持block、SEL回调。
- 同时可以观察多个keyPath。
- 不用手动移除观察者。
使用1:
// 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];
}];
使用2:
导入#import <KVOController/NSObject+FBKVOController.h>
[self.KVOController observe:clock keyPath:@"date" options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew action:@selector(updateClockWithDateChange:)];
网友评论