关于KVO的一些注意事项

说实话,平时不怎么用KVO,由于前段时间的自己想封装一个无数据的占位图,于是就需要用到的KVO的东西。

1.观察者监听谁。

比如我要监听“KVOArr”

//添加观察者

[self addObserver:self forKeyPath:@"KVOArr" options:NSKeyValueObservingOptionNew context:nil];

坚听观察对的吧。监听就是监听这个对象的指针对吧,那如果我在下边设置这样设置。

_KVOArr = Arr;

我这样将一个数组的指针给KVOArr。KVOArr的值,和指针相应的都发生了变化对吧。实际上这样写,KVO是监听不到的,也就不会走监听的额回调方法。

必须要 self.KVOArr = Arr; 或者你直接KVOArr alloc之后呢就开始赋值。

小问题,我们不做深究。

2.KVO崩溃

KVO崩溃一班是没有在dealloc里面写removeObserver这个方法对吧。但是今天我意外的发现了一个东西。我是没能发现原理是什么,在此若有哪位大神知道可否告知小弟,小弟感激不竟啊。

我发现的崩溃信息是这样的,我写了dealloc方法,Viewcontroller1里面有KVO,然后viewcontroller1里面写的有dealloc方法,按理来说再怎么滴都不会崩溃啦,但是我Viewcontroller2是1的二级视图。viewcontroller2里面也有KVO里面也写啦dealloc方法,就是i 这样一级视图进入二级视图。再出来,再进去,如此,就崩溃了。

我试试,是不是dealloc方法走得多了。我在监听方法里[self addObserver:self forKeyPath:@"KVOArr" options:NSKeyValueObservingOptionNew context:nil];

我把context加上,一级视图的和二级视图的区分开,可是还是崩溃。是在不知道为啥,最后只好用鳖的方法实现的了,如果有人遇到这种问题,可以一块交流,待我哪天研究出来再补上解决方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面 程序设计语言中有各种各样的设计模式(pattern)和与此对应的反设计模式(anti-pattern),...
    Frankxp阅读 10,347评论 0 23
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,820评论 0 9
  • 上半年有段时间做了一个项目,项目中聊天界面用到了音频播放,涉及到进度条,当时做android时候处理的不太好,由于...
    DaZenD阅读 8,105评论 0 26
  • KVO 作为 iOS 中一种强大并且有效的机制,为 iOS 开发者们提供了很多的便利;我们可以使用 KVO 来检测...
    JzRo阅读 4,547评论 0 2
  • 本文由我们团队的 纠结伦 童鞋撰写。 文章结构如下: Why? (为什么要用KVO) What? (KVO是什么...
    知识小集阅读 12,083评论 7 105