gpt4 book ai didi

可选 UI 元素的快速性能

转载 作者:行者123 更新时间:2023-11-28 10:35:33 24 4
gpt4 key购买 nike

在 Swift 中设置 UILabel 我可以执行以下操作

@IBOutlet var wLabel: UILabel!

@IBOutlet var wLabel: UILabel?

设置文本我可以做

wLabel.text = "..."

或者,对于后者,做

wLabel?.text = "..." // with a question mark for the optional

将它们保持为可选将有助于它们意外为 nil 的情况,因为它会跳过此调用并继续执行代码。如果标签为 nil,则使用 ! 声明它们会使应用程序崩溃。

现在为什么不把所有东西都设为可选的呢?我能想到的唯一原因是为了更好的表现。如果我的应用程序有很多 UI 元素,那么我是否应该避免让它们成为可选元素,因为它们是可选的意味着性能方面的劣势?我在这里找不到任何相关信息。

最佳答案

使用 ?在你的 Outlet 中会让你的代码无法追踪

在某些情况下,崩溃非常好,因为如果没有崩溃,那么即使是很小的错误也很难追踪。

考虑带有 ! 的 @IBOutlet 示例:

@IBOutlet var wLabel: UILabel!
wLabel.isEnabled = true

只需从 Storyboard中删除 Outlet 标签的连接并运行该应用程序,您的应用程序就会在 wLabel.isEnabled = true 时崩溃。由于您遇到了崩溃,因此您可以进入 Storyboard查看连接是否正确。如果没有连接,你添加它,该死的!你轻松解决了这个问题。

现在考虑带有 ? 的 @IBOutlet 示例:

@IBOutlet var wLabel: UILabel?
wLabel?.isEnabled = true

做同样的事情,只需从 Storyboard中删除 Outlet 标签的连接并运行应用程序,您的应用程序根本不会崩溃。您将无法知道错误,从而使您的代码变得一团糟且无法追踪。

Apple 人员非常了解可选的东西,他们确实出于某种原因强制解包了@IBOutlet。当然 !?

之间没有性能差异

关于可选 UI 元素的快速性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53794971/

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