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