NSTimer
[[NSRunLoop currentRunLoop] addTimer:self.progressTimer forMode:NSRunLoopCommonModes];
- 2妥粟、NSTimer 的創(chuàng)建與撤銷必須在同一個線程操作,不能跨越線程操作吏够;
- 3勾给、存在內(nèi)存泄露風險(相互引用)
- (void)cancel{
[_timer invalidate];
_timer = nil;
}
- (void)dealloc{
[self cancel];
}
- 4、如果在頁面里面使用锅知,建議在頁面消失的時候可以將定時器cancel
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self cancel];
}
GCD定時器
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_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒執(zhí)行
dispatch_source_set_event_handler(_timer, ^{
if(timeout<=0){ //倒計時結(jié)束,關(guān)閉
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
}
timeout--;
});
dispatch_resume(_timer);
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者