Swift 屬性觀察器

2022-03-17 22:26:22 字數 831 閱讀 7775

1、簡單介紹

屬性觀察器監控和響應屬性值的變化,每次屬性被設定值的時候都會呼叫屬性觀察器,甚至新的值和現在的值相同的時候也不例外。

可以為除了延遲儲存屬性之外的其他儲存屬性新增屬性觀察器,也可以通過過載屬性的方式為繼承的屬性(包括儲存屬性和計算屬性)新增屬性觀察器。

注意:不需要為無法過載的計算屬性新增屬性觀察器,因為可以通過 setter 直接監控和響應值的變化。

2、監測方式

可以為屬性新增如下的乙個或全部觀察器:

分析:willset觀察器會將新的屬性值作為固定引數傳入,在willset的實現**中可以為這個引數指定乙個名稱,如果不指定則引數仍然可用,這時使用預設名稱

newvalue表示。

類似地,didset觀察器會將舊的屬性值作為引數傳入,可以為該引數命名或者使用預設引數名oldvalue。

注意:willset和didset觀

察器在屬性初始化過程中不會被呼叫,它們只會當屬性的值在初始化之外的地方被設定時被呼叫。

3、實現例子:

class

student

didset}}

}let student =student()

student.score = 80student.score = 90student.score = 100

列印結果:

about to set score to 80進步了 80scores

about to set score to 90進步了 10scores

about to set score to 100進步了 10 scores

swift 屬性觀察器

用來監視屬性值變化,當屬性值發生改變時可以對此作出響應。可以為除了延遲儲存屬性之外的其他儲存屬性新增屬性觀察器,也可以通過過載屬性的方式為繼承的屬性 包括儲存屬性和計算屬性 新增屬性觀察器。swift 屬性擁有setget語法 var score int set 複製 willset和didset分...

9 7 Swift屬性觀察器

屬性觀察器 觀察屬性的變化,是指屬性被修改時可以呼叫我們事先寫好的 去額外執行一些操作。類似於oc中的 kvo 存在兩種屬性觀察器 1.willset 在設定新值的時候呼叫 2.didset 在設定新值的之後呼叫 可以直接為除 lazy 屬性之外的儲存屬性新增屬性觀察器,你不可以直接給類裡面的計算屬...

swift 學習筆記 23 屬性 屬性觀察器

這裡定義乙個類,number,乙個屬性為 max,代表最大值,先不看後面 willset 等的內容,如果只是乙個普通的屬性,當改變這個屬性值的時候很好改變,隨便賦值,不管後來的值是否比原來的值大還是小 當有需求為,後面賦值比原來值大時,賦值成功,小於原來值的時候,保持原值,就需要 判斷了,就需要屬性...