在Apple Swift中,在什么情况下我不希望隐式解包可选项?

我相信我明白为什么选项是方便的(我最好的想法是能够返回一个零布尔值),但在什么情况下,我想声明一个包装的可选使用? 而不是 ! 为隐式解包可选。

这似乎没有必要宣布? 然后input! 到处都是,而不仅仅是使用! 一旦。

我不想忽视? 作为无用的,但我只是无法find它的用途…任何想法?

如果您尝试访问隐式解包的可选内容,并且没有任何内容,则您的应用将崩溃。

如果您使用模式来检查可选的绑定和可选链接的内容 – 您可以控制应用程序在不可预见的情况下应该如何优雅地失败。 而且它不会让你的代码更加复杂。

没有崩溃似乎是一个很好的理由给我。

首先让我们来谈谈点什么? 在迅速。 你可以创build一个如下所示的var。

var number : Int? 

你基本上是说这个variables有可能是零。 如果有一个对象可能是零的可能性,那么你不会想要做这样的事情。

 var secondNumber = number! + 5 

基本上在你说的这个陈述中,这个variables有可能是零,但是我会完全忽略这个事实,假装没有办法可能是零。

相反,您将需要检查该variables是否存在,然后将其设置为如此

 var number : Int? var number2 : Int? number = 10 if let unwrappedNumber = number { number2 = unwrappedNumber + 5 } 

希望这可以帮助!

隐式解包选项引入了类似于解引用空指针的可能失败。 只有当你确信没有人会意外地通过零时,或者当你愿意告诉接口的客户端,如果它们违反了接口要求,这个函数将会崩溃的时候,你才应该使用它们。

另一种避免使用的方法? 一再是如果让声明:

 func foo(bar:Int?) -> Int? { if let x = bar { if Int.max / x >= x { return x * x } } return nil } 

这里x是一个Int而不是Int?