美文网首页
浅谈KVO, iOS的开发之旅

浅谈KVO, iOS的开发之旅

作者: 不懂冯先生 | 来源:发表于2017-03-03 11:05 被阅读65次
我们应该了解的基础知识

所谓的KVO就是key-value-observeing, 翻译过来就是 观察者模式

首先我们应该知道KVO是不能直接监听控制器ViewController数组的变化的,需要将数组定义在模型中,然后控制器ViewController持有模型对象,通过该对象才能监听。

注册监听

addObserver:<#(nonnull NSObject *)#> forKeyPath:<#(nonnull NSString *)#> options:<#(NSKeyValueObservingOptions)#> context:<#(nullable void *)#>

重写监听方法

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

移除监听

[ removeObserver:self forKeyPath:@""];

代码如下

首先先设置ViewController的分类

@interface Model : NSObject
@property (strong,nonatomic)NSMutableArray *modelArray;
@end

实现部分

-(NSMutableArray *)modelArray{
    if(!_modelArray){
        _modelArray = [NSMutableArray array];
    }
    return _modelArray;
}
@end
//1.创建模型对象
 
[self.model addObserver:self forKeyPath:@"modelArray" options:NSKeyValueObservingOptionNew context:nil];

需要注意的是数组的添加/删除必须采用这个方法   mutableArrayValueForKeyPath
[[self.model  mutableArrayValueForKeyPath:@"数组名字"] addObject:@"添加的Object"];
[[self.model  mutableArrayValueForKeyPath:@"数组名字"] removeObject:@"删除的Object"];
监听方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context{
  if (![keyPath isEqualToString:@"modelArray"]) {
//        NSLog(@"%ld",_model.modelArray.count);  
        return;
    }
}
移除监听
- (void)dealloc {
     [_model removeObserver:self forKeyPath:@"modelArray"];
}

PS:日积月累, 天天进步
纪念单身狗的每一天...

相关文章

  • 浅谈KVO, iOS的开发之旅

    我们应该了解的基础知识 所谓的KVO就是key-value-observeing, 翻译过来就是 观察者模式 首先...

  • iOS-KVO本质

    参考篇:iOS-KVO浅谈 前言:本文简述KVO本质,如有错误请留言指正。 什么是KVO? KVO的全称是Key-...

  • iOS-KVO浅谈

    上一篇:iOS-KVC浅谈 前言:KVO 作为 KVC 的同袍兄弟,功能更强大,聊聊 KVO。 一、KVO 简介 ...

  • 知识点3

    26. 什么是KVC和KVO? KVO: iOS开发-KVO的奥秘 http://www.jianshu.com/...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • KVO

    今天和大家讨论一下OC中KVO(KeyValueObserving)键值观察 KVO定义 KVO是iOS开发中的一...

  • KVC

    KVC原理剖析 - CocoaChina_让移动开发更简单 iOS开发底层细究:KVC和KVO底层原理 | iOS...

  • 深拷贝和浅拷贝

    1: iOS开发 深拷贝与浅拷贝 2: iOS 浅谈:深.浅拷贝与copy.strong 3: iOS开发——深...

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • iOS知识点,iOS面试题, iOS面试题总结

    推荐 :iOS七年开发之路网络笔记,iOS知识点总结,iOS开发笔记。KVC /KVO的底层原理高质量 iOS 博...

网友评论

      本文标题:浅谈KVO, iOS的开发之旅

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