在OC中.nil一般表示爲空值,這麼說可能比較難理解,也可以說是指向一個不存在對象的指針.向nil發送消息不崩潰的原因是objc_msgsend()內部的處理.PS:有一次被問到爲什麼array越界會崩潰…當時想的比較膚淺,其實是因爲越界之後可能訪問,修改了其他空間的值,造成了不安全.
言歸正傳,Swift中的nil的概念和OC不太一樣,Swift中的nil表示的是一個確定的值.任何類型的可選狀態都可以被設置爲nil.如果不是可選值,就不能設置爲nil.(不止是對象類型)
可選值的判斷
var isTure: bool?
1. if判斷
if isTure != nil {
/// 邏輯代碼
}
2. 可選綁定
if let xxx = isTure {
/// 執行邏輯代碼
}
3. 合併空值運算符"??"
(isTure ?? false)
如果isTure不爲nil則爲isTure解包的值.如果爲nil則爲右邊的值