既然我们确信有值,为什么还需要隐式解包可选类型(Implicitly Unwrapped Optionals)?
大家好!我刚开始学习 Swift,有一个问题困扰着我。我在阅读文档时遇到了一个叫 Implicitly Unwrapped Optionals(IUO)——隐式解包可选类型的东西。它们用感叹号声明,例如:
```swift
var name: String! = "Alice"
```
我理解这是一种可选类型,在访问时会自动解包,无需写 `if let` 或 `guard let`。但我不明白的是:为什么需要这种类型?如果我们确信有值(感叹号暗示了这一点),为什么不直接使用普通的非可选类型,比如 `String`?区别在哪里?
我听说 IUO 经常用于 UIKit 的属性,特别是在 storyboard 中,例如:
```swift
@IBOutlet weak var button: UIButton!
```
为什么不能直接写 `UIButton`?毕竟如果我们连接了按钮,它肯定存在。还是说这与视图的生命周期有关,有什么魔法?请解释一下。