GCD 延时执行

作者: 本帅不良 | 来源:发表于2020-08-21 10:28 被阅读0次

延时 0.5 秒执行

swift

//延时 0.5s 执行
DispatchQueue.global().asyncAfter(deadline: DispatchTime.now()+0.5) {
      //此时处于主队列中
      self.refreshDeviceList()
}

oc

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [[NSNotificationCenter defaultCenter] postNotificationName:kBackToDeviceList object:nil];
});

DispatchQueue.global()获取系统global队列
DispatchTime.now()获取当前时间
如果refreshDeviceList()中有刷新 UI 的操作记得放在主线程。

回到主线程操作:

DispatchQueue.main.async {
      //UI操作
      self.tableView.reloadData()
}
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_global_queue(0, 0), ^{
        
    });

可以直接放在主线程执行这个延时操作,由于是异步的,并不会阻塞主线程。

        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+0.5) {
            self.refreshDeviceList()
        }

相关文章

网友评论

    本文标题:GCD 延时执行

    本文链接:https://www.haomeiwen.com/subject/ajfujktx.html