Jim's GameDev Blog

Swift Optional Variable

2016-2-4

关于 Swift 的 Optional Variable 的介绍在这里有详细的介绍了,感谢joeyio的这篇文章对这个概念的讲解。

我结合自己的理解简单总结下。对于非 Optional 变量,必须在声明时或者构造函数中进行初始化,而有些变量是无法一开始就进行初始化的,所以无法写成 var obj:Type,编译器会报错。这时候就需要写成 var obj:Type?,表示这个值会在以后的某个时间进行初始化,并使用一个Wrapper类型的对象来代替。既然是一个Wrapper对象,所以在读写的时候需要解包和封包。? 表示了安全的解包,!表示了非安全的解包(解包失败会Crash) 。如果在声明时使用 !,像是这样 var obj:Type!,那么在解包时就无需手动加上 ! 或者 ?,编译器会自动替我们做这些事情。