03-dispatch_after

葉喬木發表於2018-12-14

1 dispatch_after 概念

在指定時間之後將任務追加到主佇列中。嚴格來說,這個時間並不是絕對準確的,但想要大致延遲執行任務,dispatch_after函式是很有效的。

    NSLog(@"currentThread---%@",[NSThread currentThread]);  // 列印當前執行緒
    // 延時5秒執行任務
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW,(int64_t)(5.0 * NSEC_PER_SEC));
    dispatch_after(time, dispatch_get_main_queue(), ^{
        // 5 秒之後將任務追加到主執行緒
        NSLog(@"currentThread---%@",[NSThread currentThread]);  // 列印當前執行緒
        NSLog(@"我來延時了");
    });
    

2 iOS 中 延時執行任務的方式常見的有

  • NSTimer
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];
  • performSelector afterDelay

    [self performSelector:@selector(doSomething) withObject:self afterDelay:0.5];