使用NSTimer定時(shí)器有幾個(gè)缺點(diǎn)轰胁,
1.分線程需要自動(dòng)管理RunLoop,
2.精確度不太高。
而使用GCD定時(shí)器是沒(méi)有這些缺點(diǎn)的局蚀。代碼如下:
@interface ViewController ()
@property (nonatomic,strong) dispatch_source_t timer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//創(chuàng)建一個(gè)隊(duì)列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//dispatch_source_t 本質(zhì)上是一個(gè)oc對(duì)象3固摇急但!
self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
//GCD的時(shí)間參數(shù)
dispatch_time_t start = DISPATCH_TIME_NOW;
dispatch_time_t interval = 1 * NSEC_PER_SEC;
dispatch_source_set_timer(self.timer, start, interval, 0);
//設(shè)置定時(shí)器的回調(diào)
dispatch_source_set_event_handler(self.timer, ^{
NSLog(@"----%d",[NSThread isMainThread]);
});
//啟動(dòng)定時(shí)器
dispatch_resume(self.timer);
}
打印的結(jié)果:
2017-06-13 21:55:34.777 GCDTimer[6623:2965563] ----0
說(shuō)明該定時(shí)器是創(chuàng)建在分線程上了澎媒,銷毀定時(shí)器可以調(diào)用
dispatch_source_cancel(_timer);