最终,我很快就在 swift 中使用了 asyncAfter 特性,它确实有一些延迟,而且看起来与普通代码不同。
异步代码:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.0 , execute: {
self.updateUI()
})
普通代码:
self.updateUI()
执行选择器也有类似的问题。
self.performSelector("onFlip", withObject: nil, afterDelay: 0)
这个延迟是因为创建新线程造成的吗?
最佳答案
这是预期的。
DispatchQueue.main.asyncAfter(deadline: .now() + 0.0 , execute: {
self.updateUI()
})
本质上与
相同DispatchQueue.main.async {
self.updateUI()
}
由于您将代码分派(dispatch)到主线程异步,它也不会立即执行。由于异步调度,闭包内的代码不会立即执行,只会在 main 的下一个运行循环中执行,这可能会导致可测量的延迟。
关于ios - asyncAfter 似乎没有时间延迟 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50642582/