@property (nonatomic, strong) NSTimer *timer;
@property (nonatomic, assign) NSInteger seconds;
- (void)countDown{
[self.timer fire];
}
- (NSTimer *)timer{
if (!_timer) {
_timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
}
return _timer;
}
- (void)countDown{
NSLog(@"countDown");
if (self.seconds == 0) {
self.text = LS(@"3");
}else if (self.seconds == 1){
self.text = LS(@"2");
}
else if (self.seconds == 2){
self.text = LS(@"1");
}
if (self.seconds == 3) {
self.alpha = 0;
[self.timer invalidate];
self.timer = nil;
return;
}
self.seconds ++;
}
- (void)dealloc{
[self.timer invalidate];
self.timer = nil;
}
__block NSInteger timeOut = 3;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
if (timeOut <= 0) {
dispatch_cancel(timer);
dispatch_async(dispatch_get_main_queue(), ^{
self.alpha = 0;
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
self.text = [NSString stringWithFormat:@"%ld",(long)timeOut];
timeOut --;
});
}
});
dispatch_resume(timer);