gpt4 book ai didi

swift - 在 DispatchQueue.main.async 上运行代码是否较慢?

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

当创建一个使用闭包中 API 数据的标签时,该闭包返回来自该 API 的数据:

APIData().getRequest(epicGamesUsername: "test") { (output) in

DispatchQueue.main.async {

let winsLabelForProfile = Label().createLabel(labelText: output[0], font: "Avenir-HeavyOblique", fontSize: 45, center: center, centerX: centerX, centerY: centerY, offsetX: 0, offsetY: -(self.view.frame.width / 13), height: self.view.frame.width / 6, width: self.view.frame.width / 2, textAlignment: NSTextAlignment.center)

self.view.addSubview(winsLabelForProfile)

}

我必须将标签的创建放回主线程。

我的问题很简单:以这种方式添加标签会减慢我的应用程序的速度吗?如果是这样,有什么更好的方法来实现这一目标?

当我测试添加标签而不异步添加标签时,它看起来肯定更快。

最佳答案

如果 APIData().getRequest 调用不频繁,则可以忽略该交易。由于这是与网络相关的,我认为情况并非如此,并且实际上没有开销。

还要记住,如果您遇到一些性能问题,您应该使用 Xcode 工具来查找问题的根源,而不是推测正在发生的性能问题是什么。人们常常责怪代码的某些部分不负责性能问题(空间新手),并且他们浪费时间来优化正常工作的东西。

您的代码复杂性随着时间的推移是恒定的,因此如果您遇到性能问题,这不是问题。

offtopic:这段代码看起来很糟糕,很难阅读和维护。考虑让它变得更简单,将其分成多行。
事实上,这看起来像是一个糟糕的 mock ,因为网络层离 UI 部分太近了。您没有应该维护数据结构和业务逻辑的数据模型。

关于swift - 在 DispatchQueue.main.async 上运行代码是否较慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49786704/

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