0

在从该 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)

        }

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

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

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

4

1 回答 1

0

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

还要记住,如果你有一些性能问题,你应该使用 Xcode 工具来定位问题的根源,而不是来宾说什么是性能问题。人们经常责怪代码的某些部分对性能问题不负责(空间新手),他们浪费时间来优化可以正常工作的东西。

您的代码复杂性在时间上是恒定的,因此如果您有性能问题,这不是问题。

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

于 2018-04-12T01:57:13.870 回答