既然我们确信值存在,为什么还需要隐式解包可选类型(Implicitly Unwrapped Optionals)?
你好!我刚开始学习 Swift,有一件事一直搞不明白。文档中说,Implicitly Unwrapped Optionals (IUO) 是当我们确信其中一定有值时,在使用时自动解包的可选类型。但既然我们确信值存在,为什么还需要它们?为什么不直接使用普通类型(String、Int 等)?
下面是我在书中找到的一个例子:
```swift
let assumedString: String! = "Hello, world!"
let implicitString: String = assumedString // 自动解包
```
但如果我确信它是一个字符串,为什么不直接写:
```swift
let assumedString: String = "Hello, world!"
```
有什么区别?我听说 IUO 用于 IBOutlet 和其他一些场景,但我不明白为什么不能使用普通的可选类型配合 `if let` 或 `guard let` 来检查。这样不是更安全吗?你能用实际例子解释一下,什么时候 IUO 是真正必要的,以及它们与普通可选类型的区别吗?