Swift已經出了很長的一段時間了,好多項目已經開始著手用Swift來寫了,現在給大家聊聊
運用屬性觀察者 - didSet方法需要注意的事項:
didSet方法:在新的值被設定後立即調用。
偶然一說大家估計不知道它到底有什麼用處,在實際項目開發中,估計經常會遇到這樣的需求:
我有兩個變數,分別為a,b。但是有一點特殊b變數需要依賴a變數,說白了就是b必須a有值了
才能夠設定。
說了它在實際項目中的用處,大家可以想象下,用處還是比較多了。今天就聊聊運用它需要的注意事項,
我們先來看3個例子:
開始我建立了一個Student類,當調用didSet方法時,會列印“調用了didSet方法”,代碼如下:
import UIKitclass Student: NSObject { var name: String? { didSet { print("調用了didSet方法") } } override init() { } init(name: String) { self.name = name } func testDidSet() { name = "Ocean" }}
然後通過點擊螢幕對Student類進行調用:
第一種情況,代碼如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let student = Student() student.name = "Ocean" }
輸出結果:
第二種情況,代碼如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let student = Student(name: "Ocean") print(student.name) }
輸出結果:
第三種情況,代碼如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let student = Student() student.testDidSet() }
輸出結果:
不防,大家可以觀察下,上面的三種情況,為什麼第二種沒有調用didSet方法。
能不能發現什麼呢。
第二種情況,沒有調用init方法。
根據官方文檔,我們可以得出結論:
在初始化的時候賦值,是不調用didSet方法的。