欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS dispatch_after延时执行

程序员文章站 2022-05-29 12:02:48
...

dispatch_after函数并不是在指定时间之后才开始执行处理,而是在指定时间之后将任务追加到主队列中。

 

#pragma mark dispatch_after
- (void)gcd_dispatch_after {
    //打印当前线程
    NSLog(@"currentThread---%@",[NSThread currentThread]);
    NSLog(@"asyncMain---begin");
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        //2.0秒后追加任务代码到主队列,并开始执行
        //打印当前线程
        NSLog(@"after---%@",[NSThread currentThread]);
    });
}
//Swift版本
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {        
}

 

//2021-06-22 11:39:06.00000  GCD[2488:1146668] currentThread---<NSThread:0x283924dc0>{number = 1,name = main}
//2021-06-22 11:39:06.00000  GCD[2488:1146668] asyncMain---begin
//2021-06-22 11:39:08.00000  GCD[2488:1146668] after---<NSThread:0x283924dc0>{number = 1,name = main}