IOS 如何监听一个BOOL值的是否改变?
PHPz
PHPz 2017-04-17 14:29:43
[iOS讨论组]

RT,我项目里有要删除蓝牙外设里面保存的记录的功能,我设置了一个BOOL值来判断是否删除成功,我要如何监听这个值改变了而去进行对应操作?

我去查了下KVO,然后现在已经完成了这个需求,我用的方法是直接创建一个NSObject类,类里设置一个BOOL属性,

@interface clean : NSObject
@property(nonatomic)BOOL deleteSuccess;
@end

然后到要监听操作的类里

import "CleanCodeController.h"

import "clean.h"

@interface CleanCodeController ()
@property(nonatomic,strong)clean *c;
@end

  • (void)viewDidLoad
    {
    [super viewDidLoad];
    self.c = [[clean alloc] init];
    [self.c setValue:@NO forKey:@"deleteSuccess"];
    [self.c addObserver:self
    forKeyPath:@"deleteSuccess"
    options:NSKeyValueObservingOptionNew
    context:nil];
    }
  • (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {

    NSLog(@"值改变操作");
    }
    -(void)dealloc
    {
    [self.c removeObserver:self forKeyPath:@"deleteSuccess"];
    }

这样的确可以监听到BOOL值的改变了,还想问问还有没有更简单的方法?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
ringa_lee

成为BOOL观察者,这个值有变化就通知你
用这个方法
[ addObserver: forKeyPath: options: context: ];

然后实现这个方法 一点BOOL值有变动 就会调用下面这个方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

PHP中文网

OC里的KVO就可以实现,一楼给的框架,专门是为了解决这个问题的,但是学习成本略高,为了这么一个要求去懂框架也不太合适

天蓬老师

我刚学ios,不过昨天我们组长给我们讲了github上的一个项目,是ReactiveCocoa框架,不知道行不行,你试试。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号