OC里面可以重寫(xiě)屬性的get和set方法,swift里沒(méi)有對(duì)應(yīng)的寫(xiě)法,但有屬性觀察器
屬性觀察器會(huì)監(jiān)控和響應(yīng)屬性值變化,每次屬性設(shè)置值時(shí)都會(huì)調(diào)用屬性觀察器
swift里提供了屬性觀察器:
- willSet 在新的值即將被設(shè)置時(shí)調(diào)用,還沒(méi)設(shè)置
- didSet 在新的值被設(shè)置之后調(diào)用
willSet會(huì)將新的屬性值作為參數(shù)傳入,可以為這個(gè)參數(shù)指定名稱,不指定則為newValue
didSet則是將舊的屬性值作為參數(shù)傳入,不指定參數(shù)名稱則為oldValue
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
print(" \(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
print("Added \(totalSteps - oldValue) steps")
}
}
}
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 200
// 200
// 200 steps
stepCounter.totalSteps = 360
// 360
// 160 steps