【iOS】【ReactiveCocoa】[RACSignal interval]定时器

本文探讨了如何使用ReactiveCocoa (RAC) 的信号来响应iOS中UIViewController的生命周期事件,特别是视图消失和控制器被释放的情况。通过具体示例说明了如何创建定时器信号,并在视图控制器消失时停止该信号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//Reactive cocoa: Stop a RACSignal after UIViewController is dealloc
    //启用一个RAC定时器 
    RACSignal *rac_viewWillDisappear = [self rac_signalForSelector:@selector(viewWillDisappear:)];
    [[[RACSignal interval:10 onScheduler:[RACScheduler mainThreadScheduler]] takeUntil:rac_viewWillDisappear] subscribeNext:^(id x) {
        //Do what you need
        NSLog(@"--rac_willDeallocSignal");
    }];
Q:【保留作业】有没有像oc一样的 [_timer fire];//立即执行的方法
【解题过程】【错误代码示范】
/*无效,viewdidiappear时不执行*/
/*无效,completed时也没回调*/
/*没用到,信号dispose*/
/*http://www.cnblogs.com/guoxiaoqian/p/4691035.html
  RAC的坑 [6.rac_willDeallocSignal不会sendNext,只会sendComplete]
  //错误
*/
    //这里要加takeUntil条件限制一下否则当控制器pop后依旧会执行
    [[[RACSignal interval:2 onScheduler:[RACScheduler mainThreadScheduler]] takeUntil:self.rac_willDeallocSignal ] subscribeNext:^(id x) {
        
        NSLog(@"每两秒执行一次");
        
    } completed:^{
        NSLog(@"每两秒执行一次:completed");
    }];
/*
 持保留意见
 https://github.com/SkyHarute/StudyForRAC
*/
    //这里这样写只是为了给大家开拓一种思路,selector的方法可以应需求更改,即当这个方法执行后,产生一个信号告知控制器释放掉这个订阅的信号
    RACSignal * deallocSignal = [self rac_signalForSelector:@selector(viewWillDisappear:)];
    
    [[[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"haha" object:nil] takeUntil:deallocSignal] subscribeNext:^(id x) {
        
        NSLog(@"haha");
        
    }];

 

 

                            ^_^ ^.^ ^=^ ^&^ ^!^  

http://stackoverflow.com/questions/27561582/reactive-cocoa-stop-a-racsignal-after-uiviewcontroller-is-dealloc

转载于:https://my.oschina.net/onepieceios/blog/744880

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值