Swift中運用didSet方法時的注意事項__Swift

來源:互聯網
上載者:User

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方法的。










相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.