美文网首页
FBKVOController的简单实用

FBKVOController的简单实用

作者: 泥孩儿0107 | 来源:发表于2017-12-02 09:40 被阅读0次

    昨天晚上在听移动端架构课程中了解到有关于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

    相关文章

      网友评论

          本文标题:FBKVOController的简单实用

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