美文网首页iOS开发
使用FBKVOController替换系统kvo

使用FBKVOController替换系统kvo

作者: 为之则易ing | 来源:发表于2017-12-07 12:06 被阅读21次

FBKVOController是Facebook开源框架(https://github.com/facebook/KVOController)。解决使用系统kvo一些常见问题:

  1. 需要适时的移除观察者。
  2. 需要重写- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSKeyValueChangeKey, id> *)change context:(nullable void *)context方法。
  3. 如果有多个观察者需要if判断。

FBKVOController使用很方便:

  1. 支持block、SEL回调。
  2. 同时可以观察多个keyPath。
  3. 不用手动移除观察者。

使用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:)];

相关文章

网友评论

    本文标题:使用FBKVOController替换系统kvo

    本文链接:https://www.haomeiwen.com/subject/nwrdixtx.html