屬性監視器
屬性觀察器控 制和響應屬性的變化, 每次屬性被設置值的時候會調用屬性觀察器,甚至新的值和舊的值相同的時候也不例外。
可以通過重載屬性的方法為繼承的誰能夠(包括存儲屬性和計算屬性)添加屬性觀察器
注意: 不需要為無法重載的計算屬性添加屬性觀察器, 因為可以通過setter直接監控和響應值的變化
1. willSet
功能: 在設置新的值之前調用
介紹: illSet 觀察器會將新的屬性值作為固定參數傳入,在willSet的事項代碼中可以為這個參數指定一個名稱, 如果不指定則參數默認名稱用 newValue 表示
2.didSet
功能: 在新的值被設置之後立即調用
功能: didSet 觀察器會將舊的屬性值作為參數傳入, 參數默認名稱為: oldValue
1、willSet 和 didSet 觀察器在屬性初始化過程中不會被調用,它們只會當屬性的值在初始化之外的地方被設置時被調用
2、如果在 didSet 觀察器裡為屬性賦值, 這個值會替換觀察器之前設置的值。
class Person: NSObject { // 年齡 屬性 var age: Int? // 姓名 屬性 var name: String? { willSet{ println("willSet") } didSet{ println("didSet") } } }