IOS 在开发中使用KVO观测属性变化
来源:互联网 发布:知我者芈月也 编辑:程序博客网 时间:2024/06/05 13:24
不久前在开发中,有一个只有内部方法才能修改的变量,我就用readonly来修饰。
@property(nonatomic, readonly, getter=isShouldRequestMsg) BOOL shouldRequestMsg;
但是当值发生变化的时候,想要引发外部类对象的一些操作,我就想使用KVO去观测这个值的变化。
[app addObserver:selfforKeyPath:@"shouldRequestMsg"options:NSKeyValueObservingOptionNewcontext:NULL];
本以为实现了这些就可以获取想要的状态变化,断点却发现没碰到对应的KVO方法。
对于readonly的属性,外部只有read的权限,没有write的权限,也就是说外部不能明确的检测到一个readonly属性的变化状态。
所以预期的效果,没有达到,后来把readonly的修饰符去掉,程序如想象的正常运行。
@property(nonatomic,getter=isShouldRequestMsg)BOOL shouldRequestMsg;
注意在addObserver的类的实现中,在dealloc方法中去remove掉对应keyPath的Observer。
如下:
[app removeObserver:selfforKeyPath:@"shouldRequestMsg"];
如果你在dealloc方法中,remove掉没有注册的keypath,将会造成crash.
总结:
KVO机制的运行是可取的,但是凡是涉及到属性的读取状态的变化的,还是要慎重使用,注意细节,方能减少bug的出现。
- IOS 在开发中使用KVO观测属性变化
- iOS: 使用KVO监听控制器中数组的变化
- iOS开发中KVO & KVC的使用
- iOS中使用KVO
- iOS开发中 代理,block,KVO 的使用
- iOS中KVO的使用
- iOS开发中KVO的内部实现
- 在iOS使用KVO时候的坑
- [ios开发基础之]KVO的使用
- IOS开发之----KVO的使用
- IOS开发 - KVC和KVO的使用
- iOS 中KVO和KVC的使用
- iOS 中KVC、KVO使用和介绍
- 利用KVO监听属性值的变化
- KVC/KVO 监听对象属性变化
- ios开发--KVO解析
- ios开发-KVO
- iOS开发-kvo
- 字典树java版本
- [Cocoa]_[画直线、矩形、文字]
- systemctl命令用法
- 通过修改配置文件,手动创建一个Linux可登陆账户
- Centos7安装mysql缺乏yum源怎么安装
- IOS 在开发中使用KVO观测属性变化
- easyui的数据表格(datagrid)使用时formatter的技巧
- 一道有趣题目
- 《计算机是怎样跑起来的》读书笔记
- Unity3D 学习笔记2——“工具在手,天下我有”
- mkdir命令详解
- CDH版本 HDFS NFS Gateway 无法启动、挂载失败问题
- 关于Android TouchDelegate源码解析
- [CSS]图片水平排列并且有固定间隔