Swift入坑iOS-多线程

GCD 延时执行

2020-08-21  本文已影响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()
        }
上一篇 下一篇

猜你喜欢

热点阅读