- 執(zhí)行一次代碼
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"only once")
});
- 延遲執(zhí)行
- 主線程睡眠3秒,該方法不推薦,因?yàn)闀?huì)阻塞主線程,影響用戶體驗(yàn)
[NSThread sleepForTimeInterval:3.0];
- 該方法在哪個(gè)線程中調(diào)用則延遲執(zhí)行的方法也會(huì)在哪個(gè)方法中執(zhí)行,即過(guò)設(shè)定的時(shí)間后會(huì)重新回到該線程中執(zhí)行方法
[self performSelector:@selector(download:) withObject:@"http://beautifulImage.jpg" afterDelay:2.0];
-(void)download:(NSString *)image {}
- 將GCD延遲執(zhí)行操作放到主隊(duì)列中執(zhí)行
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"after tow seconds");
});
將GCD延遲執(zhí)行操作放到全局并發(fā)隊(duì)列中執(zhí)行
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), queue, ^{
NSLog(@"after tow seconds");
});