Swift隐式解包 Optional
这篇讲的是 Swift 中 `ImplicitlyUnwrappedOptional`(隐式解包 Optional)的本质与使用权衡。 它指出,隐式解包 Optional(用 `!` 声明)在本质上与普通 Optional 完全相同,核心区别在于编译器会为其自动插入解包操作,允许你像访问非 Optional 类型一样直接访问其成员。这在代码书写上带来了便利,例如 `maybeObject.foo()` 无需手动加 `!`。 文章追溯了其历史成因:主要是为了在 Swift 早期,更方便地兼容和调用那些从 Objective-C 转换而来、且可能返回 `nil` 的 Cocoa API,作为一种“妥协方案”。不过,随着 Objective-C 引入 `nonnull`/`nullable` 等修饰符以及 Apple 对 Swift API 的不断完善,这种危险特性已大幅减少使用。 如今,最常见的场景仅限于 Interface Builder 连接的 `IBOutlet`。作者建议,在代码的其他部分应谨慎使用隐式解包 Optional,因为它并不意味着“变量一定有值”,而只是一种可能引发崩溃的便捷写法。对于绝大多数情况,使用 `if let` 进行 Optional Binding 是更安全的选择。