iOS开发runtime相关大公司框架解析

关于KVO的使用,以及KVOController

2016-03-07  本文已影响1931人  bde04638cca8

记得在面试的时候一直都是在简历上写熟悉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)。

上一篇 下一篇

猜你喜欢

热点阅读