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