gpt4 book ai didi

ios - 为什么从哪里调用 DispatchQueue.main.async 很重要?

转载 作者:搜寻专家 更新时间:2023-11-01 06:27:23 26 4
gpt4 key购买 nike

我写了以下代码:

DispatchQueue.main.async {
self.cameraManager.checkForCameraAuthorization(deniedCallback: {
self.presentDeniedAlert()
self.activityIndicator.stopAnimating()
}) {
self.cameraAccess = true
self.cameraButton.isEnabled = false
self.activityIndicator.stopAnimating()
}
}

cameraManager.checkForMicrophoneAuthorization(deniedCallback: {
self.presentDeniedAlert()
self.activityIndicator.stopAnimating()
}) {
DispatchQueue.main.async {
self.microphoneAccess = true
self.microphoneButton.isEnabled = false
self.activityIndicator.stopAnimating()
}
}
}

(区别在于调用async的地方)

1.崩溃 self.cameraButton.isEnabled = false can only be called from main thread

2. 一个完成得很好。

谁能解释一下,为什么会这样?

最佳答案

差异如下所述。

1st 代码中,您的 checkForCameraAuthorization 回调在不同的线程中执行,您应该知道 UIApplication/UI 相关任务应该在主线程中执行。

checkForCameraAuthorization 中获得回调后的 2 代码中,您正在主线程中执行与 UI 相关的任务,因此它工作正常。

如有疑问请评论。

关于ios - 为什么从哪里调用 DispatchQueue.main.async 很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52351411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com