FBKVOController的简单实用

2017-12-02  本文已影响0人  泥孩儿0107

昨天晚上在听移动端架构课程中了解到有关于kvo的第三方框架

FBKVOControlloer是FaceBook开源的一个 在 iOS,maxOS上使用 kvo的 开源库;

提供了block和@selector(SEL) 的回调操作,很方便实用;

https://github.com/facebook/KVOController

FBKVOController的核心代码:

NSObject+FBKVOController.h

NSObject+FBKVOController.m

FBKVOController.h

FBKVOController.m

简单的实现KVO 分3步

1.注册addObserver

2.实现监听

3.移除

利用系统的KVO 方法,必须要注意释放,也无法实现block 方式实现,麻烦,推荐FBKVOController,线程安全的KVO ,并且方便实用,使用方法如下

监测某个对象的值,然后将selector写入observe函数中,当值发生改变,就会调用通知的函数。

@interfaceViewController(){

FBKVOController *_fbKVO;

}

- (void)viewDidLoad {

[superviewDidLoad];

Model  *model=[[Model alloc]init];

model.name=@"Y.X";//初始化_fbKVO=[FBKVOController controllerWithObserver:self];//注册通过block 方式直接获取监听[_fbKVO observe:model keyPath:@"name"options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew block:^(idobserver,idobject,NSDictionary*change) {NSLog(@"%@",change);

}];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3* NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

model.name=@"update data";

});

⚠️注意!!!注意!!!注意!!!

options一定是 NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew  尤其是不常用这个第三方库的人这里可能会遇坑。。。。

上面就是简单的FBKVOController 实现的kvo监听,并且FBKVOController 提供了block, action:(SEL)2中方式实现监听;同时可以对model 多个属性进行监听,如下

//keypaths 添加多个属性,就可以了,然后在别的地方修改model 的多个属性的值,这里都可以监听到的,[_fbKVO observe:model keyPaths:[NSArrayarrayWithObjects:@"name",@"sex",nil] options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew block:^(idobserver,idobject,NSDictionary*change) {NSLog(@"%@",change);    }];

以上就是kvo 的简单实现,和FBKVOController 的使用,推荐FBKVOController实现kvo

功能,方便简单,保证线程安全,

好接下来我们看源码

此篇文章介绍了如何优雅地使用 KVO及解读源码

https://draveness.me/kvocontroller

上一篇下一篇

猜你喜欢

热点阅读