在DispatchQueue.main.async上运行代码的速度较慢吗?

时间:2018-04-12 01:41:00

标签: swift xcode multithreading dispatch-queue

创建一个标签,该标签使用封闭内的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)

        }

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

您的代码复杂性是及时的,所以如果您遇到性能问题,这不是问题。

offtopic :这段代码看起来很糟糕,难以阅读和维护。考虑使其更简单,将其分成多行 事实上,这看起来很糟糕,因为网络层要接近UI部分。您没有应该维护数据结构和业务逻辑的数据模型。