美文网首页iOS开发runtime相关大公司框架解析
关于KVO的使用,以及KVOController

关于KVO的使用,以及KVOController

作者: bde04638cca8 | 来源:发表于2016-03-07 15:30 被阅读1931次

    记得在面试的时候一直都是在简历上写熟悉KVO,KVC,发现工作以后从没用到。后来发现写项目的时候,KVO确实是一项必须学习并运用好的技能。KVO可以让代码更加简洁,减去很多冗余代码,至于他的功能就像他的名称Key-Value Observing,监测某对象值的变化。
    因为KVOController和KVO感觉没啥区别,所以我把demo放一起了,可以直接看demo,demo地址


    1.首先介绍一下普通的KVO的使用

    注册代码

    -(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)objectchange:(NSDictionary *)change context:(void *)context
    

    实现方法

    -(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)objectchange:(NSDictionary *)change context:(void*)context
    

    移除方法

    - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
    

    2.介绍一下KVOController的使用,这个是facebook开源出来的,我没搞懂,有啥用,就是提供了一个block,但是要多写好几行代码。

    导入头文件

    #import <KVOController/FBKVOController.h>
    

    绑定控制器

        self.KVOController=[FBKVOController controllerWithObserver:self];
    

    实现方法

    - (void)observe:(id)object keyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options block:(FBKVONotificationBlock)block
    

    移除检测

    - (void)unobserve:(id)object keyPath:(NSString *)keyPath
    - (void)unobserveAll
    

    不过也有很多人说KVO不好的地方,比喻说这篇文章,戳我。主要是当有多个KVO的时候会出现实现方法中的对应关系和移除(KVOController就不存在了,他使用的是blcok)。

    相关文章

      网友评论

      本文标题:关于KVO的使用,以及KVOController

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