您的位置:首页 > Web前端 > React

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

2016-09-09 00:00 141 查看
摘要: RACSignal 定时器时,页面退出时,停止执行
【ReactiveCocoa】【RACSignal】【RACSignal interval】【takeUntil】【rac_willDeallocSignal】
感慨:还是stackoverflow靠谱,但国内访问太卡了!!!

//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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rac_willDeallocSigna