1. 程式人生 > >swift中的!和?作用

swift中的!和?作用

舉個例子吧:

問題:

在實際用Swift寫CocoaTouch時,發現下面這樣寫才可以通過編譯

var amiteLbl :UILabel?

self.amiteLbl = UILabel(frame:CGRectMake(50,100,200,40))

self.amiteLbl!.text = "I love mixbox"

self.view?.addSubview(self.amiteLbl)

這裡不是很明白!號的意義。而在view addSubview 時卻又加上了?號

請幫忙解釋下 “!”在Swift裡的意義

解釋:

由於amiteLbl是可選變數,所以可能有值,也可能為nil。

使用self.amiteLbl!是明確宣告此時self.amiteLbl裡一定有值,無論什麼情況都呼叫後面的.text賦值方法。

而使用self.view?是宣告此時並不確定self.view裡是否有值,所以只在view有值時呼叫後面.addSubview方法。

這樣做的目的一是讓程式碼更明確, 二是給編譯器提供更多線索,在編譯時發現更多潛在錯誤。

Swift顯然是一門非常明確,需要開發者先想清楚再程式設計的語言,秉承了Apple一貫的作風:)