*強制解析*
* init ? 構造函數,?表示不一定能夠實例化出對象
* !表示告訴編譯器一定有值,編譯能夠通過,如果運行時沒有值就會直接崩潰
* 提示:?和 !是所有剛剛接觸Swift 的OC程序員最蛋疼的問題,前期開發要注意多看文檔和利用編譯器提示解決(option + click)
let url = NSURL(String: "http://www.baidu.com")
'' let url = NSURL(String: "http://www.baidu.com/"美女)
// 如果強制解析OptionalValue, 但是OptionalValue中沒有值時會引發一個運行時錯誤
'' print(url!)
// 需要考慮url是否有值
'' if url != nil{
''? let request = NSURLRequest(URL: url!)
'' }
*可選綁定*
* 不需要考慮url是否有值,能進入{}一定有值
* 不僅可以用來判斷可選類型中是否有值,同時可以將可選類型中的賦值給一個常量或者變量
* 可選綁定可以用在if和while語句中
* 提示 : 在實際開發中,使用非常頻繁
if let url3 = NSURL(string: "http://www.baidu.com/"){
''? let request = NSURLRequest(URL: url3)
'' }
*隱式解析可選類型(implicitly unwrapped optionals)*
* 有時候在程序架構中,第一次被賦值之后,可以確定一個可選類型\_總會\_有值。在這種情況下,每次都要判斷和解析可選值是非常低效的,因為可以確定它總會有值
* 隱式解析可選類型, 并不需要每次都使用解析來獲取可選值, 一個隱式解析可選類型其實就是一個普通類型,但是可以被當做非可選類型來使用
* 格式: 將可選類型后面的?改為!
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)? // 不需要感嘆號