Swift中?和!的區別

1.常量和變量安全

Swift語言中是用let來定義常量,而且要初始化。var來定義變量,在let或者var後面申明類型,冒號+空格,而後再加上類型名稱app

2.optional(可選)變量 可選變量用於處理值缺失的狀況,有點相似於OC中的nil,能夠用於任何類型上,不單單是類,不過更加安全。Swift是類型安全的一門語言,能夠不多申明類型 Swift和Objective-C中nil的區別 1)OC中,nil是一個指向不存在對象的指針; 2)Swift中,nil不是指針,它是一個肯定的值,用於表示值缺失。任何類型的可選狀態均可以設置爲nil,不僅是對象類型;指針

3.深刻了解Optional變量 Optional其實就是一個enum,裏面有None和Some類型。nil就是Optional.None,非nil就是Optional.Some,經過Some(T)包裝原始值,因此在是用Optional的時候要進行拆包。 聲明一個可選類型的時候要在類型後面加上? 如:var str : String? var strValue: String? 意思不是「我聲明瞭一個Optional的String值」,而是我聲明瞭一個Optional類型值。 對一個可選類型的值,須要進行拆包纔不會報錯。 拆包有兩種方式,以下: 1)Optional Binding 如: ``` if let str = strValue { let hashValue = str.hashValue }code

2)經過! str!
對於會在viewDidLoad進行初始化的變量,能夠直接定義爲var str :String!叫作Implicitly Unwrapped Optionals,稱爲隱式拆包,在進行操做的時候也須要添加!進行拆包。

?的使用場景:
1)聲明Optional值變量
2)在對Optional值操做中,用來判斷是否能響應後面的操做

!的使用場景:
1)強制對Optional值進行拆包
2)聲明隱式拆包變量,通常用於類中的屬性
相關文章
相關標籤/搜索