gpt4 book ai didi

swift - Swift 中的安全性会影响性能吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:26:37 28 4
gpt4 key购买 nike

在学习 Swift 的过程中,我见过很多安全代码与不安全代码的对比案例。一个完美的例子是

as?as!

as?,根据我的理解尝试类型转换,但如果不转换,则返回 nil。

as!,根据我的理解,尝试键入强制转换,如果失败则崩溃。

我的问题是,为什么存在 as!(以及其他具有安全对应物的不安全语法)?显然 as? 是更好的选择。我唯一能想到的答案是,也许使用 as! 编译器编译速度更快,因此主要是一种语法优化。

我只是想知道我对安全语法编译速度有点慢的看法是正确的,因为性能对我来说非常重要。

感谢您的宝贵时间。

最佳答案

这个问题基于一个错误的前提:as?as! 的主要选择通常不是性能之一。当然,as! 可能会更高效一些,但在优化的构建中,差异通常可以忽略不计。

根据上下文选择 as!as?:

  • 如果转换可能在运行时失败,那么您将使用 as?。当然,您可以添加代码来检查转换是否成功。

    当数据源是某个外部源(例如用户输入或网络请求)时,可能会失败的转换的一个常见示例。用户可以将文本值粘贴到您只需要数值的字段中。外部 Web 服务器可能不可用,甚至可能以意外格式返回数据。您希望使用 as? 来检测这些情况并妥善处理。

  • 但是如果转换不可能在运行时失败,您可以使用 as!。但是您这样做不是出于性能原因,而是出于清晰和编写简洁代码的原因。

    不能失败的转换的一个常见示例是从 Storyboard 中检索单元格原型(prototype)时,您知道基类型是在 Interface Builder 中设置的,尽管 Cocoa API 不知道这一点。添加大量代码检查以查看基类型是否设置正确(特别是因为无论如何这将是一个致命的编程错误)将是低效的,并且会导致代码中包含大量语法噪音而没有任何好处。如果你做的不正确,你很容易不小心抑制了一个你真正想在测试过程中清除的错误,从而更难找到问题。这是 as! 语法的一个很好的用例。

关于swift - Swift 中的安全性会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664129/

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