可選類型介紹
可選類型表示:這個變量有值播掷;或者這個變量沒有值(為nil)。例如
// 下面的字符串str可能有值撼班,也可能為nil
var str: String?
// 賦值
str = "Hello"
// 可以給可選變量賦值nil
str = nil
注意:可選變量可以使用nil賦值表示它沒有值歧匈;但nil不能用于非可選的變量和常量
可選的強制解析(或者叫強制拆包、強制解包)
強制解析:就是使用if判斷可選變量!=nil時使用件炉,但使用時需要加上!表示該可選變量一定有值。
// 如果你強制解析后不加!矮湘,系統(tǒng)默認會加?確保調(diào)用的安全性
if str != nil {
str!.append(" world!")
}
可選綁定
可選綁定:就是在強制解析的基礎(chǔ)上,在if語句中將可選變量賦值給一個臨時常量或變量板祝,在if作用域內(nèi)使用這個臨時常量即可。
if let temp = str {
temp.append(" world!")
}
可選的隱式解析
可選的隱式解析:就是聲明可選變量時券时,變量后面直接加!表示該可選一定有值孤里。以后使用都不用再加?和橘洞!。
使用場景:一個變量初始化一個值后炸枣,可以確保這個變量以后都不會為nil
var str: String! = "hello"
str.append(" world!")
注意:如果一個變量在賦值后,還可能被賦值為nil适肠,此時不能使用隱式解析霍衫,應(yīng)該使用普通的可選
思考:既然隱式解析在使用的時候能確保一直都不會為nil,那為什么不干脆直接使用非可選類型呢侯养?這個問題敦跌,我想了好久,最后得出的結(jié)論是:隱式解析的變量在deInit的時候如果需要釋放(賦值為nil)逛揩,這時非可選就達不到這要求了。至于使用隱式解析的其他原因惧笛,我就不是很清楚了,還希望大家知道原因的來告訴我哦患整!