有没有办法超载运营商!在Swift中避免生产版本崩溃?

时间:2016-06-23 17:28:58

标签: ios swift exception-handling swift2 swift3

如果存在nil,强制解包会导致应用程序崩溃。这在您的应用程序的开发阶段非常酷。但是,如果你懒得去做,那么这对于你的制作尤其令人头疼。

是否有人尝试过任何运算符重载/覆盖,以阻止生成构建的这些崩溃?

2 个答案:

答案 0 :(得分:7)

不,没有,没有,也不应该。

崩溃是意图。 Swift语言的实现者故意为了设计强制解包操作符(!)而崩溃。

按设计

遇到nil但未安全处理时,有两种方法可以继续:

  1. 允许程序以不一致的状态继续运行,并允许程序以未定义的,无法预料的方式运行。
    1. 破坏程序,防止它继续处于不一致,未定义,无法预料的状态。这将保护您的文件系统,数据库,Web服务等免受永久性损坏。
    2. 您认为哪两个选项更有意义?

答案 1 :(得分:2)

说实话,如果我必须维护一个使用类似内容的代码库,如果可能的话,我会把眼睛挖出来。 Swift提供了一种简单的方法来解决您因懒惰(可选项)而主动避免的问题。你可以对这些变量进行防范,但它需要与使用if语句相同的工作量。我建议的解决方案是停止懒惰并正确使用该语言。通过您的代码库并解决此问题,从长远来看,它将为您节省更多时间。