感覺swift使用的人越來越多了,所以打算跟着潮流總結一點東西,不完善或者有錯誤的地方,請指出,共同進步
1.var 和 let的使用
- var聲明的是變量,可以修改值(調用對象的set方法),舉例說明
- let聲明的是常量,不可以修改值(不可調用對象的set方法),舉例說明
var varA = 42 varA = 43 print(varA)//輸出43
let varC = 36 //varC = 46 報錯,因為let申明的就是常量,不能修改值 print(varC)
2. ?的使用,如果對象沒有賦值,默認為nil,舉例說明 ??就是如果對象為nil,則使用后面的值代替,但是原變量不修改
var myString:String print(myString) //報錯,因為myString沒有賦值
var myString:String? print(myString) //輸出:nil
var myString:String? = "myString" print(myString) //輸出:myString
var myString:String? var myString1 = myString ?? "BBBB"; print("myString1:\(myString1) myString: \(myString)") // 輸出:myString1:BBBB myString: nil
3.!的使用,如果對象沒有賦值,直接使用,會報錯,可以使用!
var myString:String! print(myString) //輸出:nil
var myString:String! myString = "myString" print(myString) //輸出:myString
4.?和!的區別,你會發現!和?在沒有賦值的情況下打印出來的值都是nil,如果使用?聲明的變量不賦值,直接調用對象的方法不執行,而使用!聲明的變量不賦值,直接調用對象的方法運行會報錯
var btn1: UIButton! btn1.frame = CGRect.init(x: 10, y: 10, width: 10, height: 120);//報錯
var btn1: UIButton? btn1?.frame = CGRect.init(x: 10, y: 10, width: 10, height: 120);//沒有報錯,這里不執行 btn1?這個問號必須加上,不然編譯之前就報錯了