定时器

Jan 8, 2017

发表于(2015-11-25 10:26:26)
今天在群里讨论一个问题
实战图片1
这里程序已进入即开始走,而且,当第一次点击时,时间跳转60s走了30s,,减少一半。我判断为:在判断enable的时候,定时器就认为走了,把判断语句换了就可以了

于是程序如下:

@weakify(self);
RACSignal *timeSignal = [[[[[RACSignal interval:1.0f onScheduler:[RACScheduler mainThreadScheduler]] take:60]startWith:@1] map:^id(NSDate *date) { @strongify(self); NSLog(@"我被执行第%d次___%@",_number,date); if (_number == 0) { [self.button setTitle:@"重新发送" forState:UIControlStateNormal]; return @YES; } else{ [self.button setTitle:[NSString stringWithFormat:@"%d", _number--] forState:UIControlStateDisabled]; return @NO; } }] takeUntil:self.rac_willDeallocSignal];

self.button.rac_command = [[RACCommand alloc]initWithEnabled:[self enableSignal] signalBlock:^RACSignal *(id input) { _number = 60; return timeSignal; }]; }

-(RACSignal *)enableSignal{ return [[RACSignal createSignal:^RACDisposable *(id subscriber) { return nil; }] map:^id(id value) { return @(self.number>0); }]; }

把enable换成固定signal,这样就不会失误了。
记,成功只给勤奋的人,我认为一个demo写的好,我对着写了一遍,不理解,没关系;第二遍重写,理解了里面思路;第三遍,学会了怎么用;第四遍,我思考着他的功能,稍微看了下,自己写。
我认为只有这样才会记进心里去。