Swift—強(qiáng)制解析&可選綁定&隱式解析可選類型

*強(qiáng)制解析*

* init ? 構(gòu)造函數(shù),?表示不一定能夠?qū)嵗鰧ο?/p>

* !表示告訴編譯器一定有值,編譯能夠通過,如果運(yùn)行時沒有值就會直接崩潰

* 提示:?和 !是所有剛剛接觸Swift 的OC程序員最蛋疼的問題,前期開發(fā)要注意多看文檔和利用編譯器提示解決(option + click)

let url = NSURL(String: "http://www.baidu.com")

'' let url = NSURL(String: "http://www.baidu.com/"美女)

// 如果強(qiáng)制解析OptionalValue, 但是OptionalValue中沒有值時會引發(fā)一個運(yùn)行時錯誤

'' print(url!)

// 需要考慮url是否有值

'' if url != nil{

''? let request = NSURLRequest(URL: url!)

'' }

*可選綁定*

* 不需要考慮url是否有值,能進(jìn)入{}一定有值

* 不僅可以用來判斷可選類型中是否有值,同時可以將可選類型中的賦值給一個常量或者變量

* 可選綁定可以用在if和while語句中

* 提示 : 在實(shí)際開發(fā)中,使用非常頻繁

if let url3 = NSURL(string: "http://www.baidu.com/"){

''? let request = NSURLRequest(URL: url3)

'' }

*隱式解析可選類型(implicitly unwrapped optionals)*

* 有時候在程序架構(gòu)中,第一次被賦值之后,可以確定一個可選類型\_總會\_有值。在這種情況下,每次都要判斷和解析可選值是非常低效的,因?yàn)榭梢源_定它總會有值

* 隱式解析可選類型, 并不需要每次都使用解析來獲取可選值, 一個隱式解析可選類型其實(shí)就是一個普通類型,但是可以被當(dāng)做非可選類型來使用

* 格式: 將可選類型后面的?改為!

let bigButton: UIButton!

* 注意:

> * 如果一個變量之后可能變成nil的話請不要使用隱式解析可選類型。如果你需要在變量的生命周期中判斷是否是nil的話,請使用普通可選類型

'' let url3: NSURL? = NSURL(string: "http://www.baidu.com/")

'' let url4: NSURL! = NSURL(string: "http://www.baidu.com/")

'' print(url3!) // 需要驚嘆號來獲取值

'' print(url4)? // 不需要感嘆號

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容