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()
}