gpt4 book ai didi

swift - 何时在 SWIFT 中使用线程进行 UI 更新

转载 作者:行者123 更新时间:2023-11-30 13:06:46 25 4
gpt4 key购买 nike

我对何时将更新 UI 的代码放在主队列上感到困惑:

dispatch_async( dispatch_get_main_queue() )
{
// Do UI update here
}

在线资源,例如https://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1建议使用该方法。然而,许多 swift/iOS 教程并不应用这种编码模式,特别是当涉及到小型 UI 更新时,例如 button.hidden = falsebutton.backgroundColor = UIColor.blueColor().

最佳答案

所有 UI 元素都应在应用程序的主线程中更新。如果您希望看到正确的过渡和平滑更新的用户界面,这是一条黄金法则。

如果您正在主线程上工作,则无需使用:

dispatch_async( dispatch_get_main_queue() )
{
// Do UI update here
}

因为您位于应用程序的主线程中。

当您在另一个线程或另一个操作中工作并且需要更新这些线程中的 UI 时,您需要使用在这种情况下呈现的代码块。

想象一下您需要在后台线程中进行一些计算并在此线程中更新 UI 的情况。

代码解决方案示例:

//Async operation in with we would like to do some calculation and do not block main thread of the application.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
let result = doSomeCalculation()
//After we receive result of the calculation we need to update UI element `UIlable` so we call main thread for that.
dispatch_async(dispatch_get_main_queue()) {
label.stringValue = result
}
}

关于swift - 何时在 SWIFT 中使用线程进行 UI 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39270295/

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