延時執行的三種方式,延時執行三種方式
1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 // Do any additional setup after loading the view, typically from a nib. 5 } 6 7 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 8 { 9 NSLog(@"-----touchesBegan1-----");10 11 12 13 NSLog(@"-----touchesBegan2-----");14 }15 16 - (void)download:(NSString *)url17 {18 NSLog(@"download------%@---%@", url, [NSThread currentThread]);19 }20 21 - (void)delay322 {23 // 3秒後回到主線程執行block中的代碼24 // dispatch_queue_t queue = dispatch_get_main_queue();25 // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), queue, ^{26 // NSLog(@"------task------%@", [NSThread currentThread]);27 // });28 29 // 3秒後自動開啟新線程 執行block中的代碼30 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);31 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), queue, ^{32 NSLog(@"------task------%@", [NSThread currentThread]);33 });34 }35 36 - (void)delay237 {38 // 一旦定製好延遲任務後,不會卡主當前線程39 [self performSelector:@selector(download:) withObject:@"http://555.jpg" afterDelay:3];40 }41 42 - (void)delay143 {44 // 順延強制不要用sleep,壞處:卡住當前線程45 [NSThread sleepForTimeInterval:3];46 NSLog(@"-----下載圖片-----");47 }