Property observers в Swift позволяют тебе отслеживать и реагировать на изменения значения stored property. Они определяются с помощью двух опциональных блоков: willSet и didSet.
willSet вызывается непосредственно перед изменением значения. Он предоставляет доступ к новому значению через автоматически названную константу newValue.
var score: Int = 0 {
willSet {
print("Score is about to change to \(newValue)")
}
}
didSet вызывается сразу же после изменения значения. Он предоставляет доступ к предыдущему значению через автоматически названную константу oldValue.
var score: Int = 0 {
didSet {
print("Score changed from \(oldValue) to \(score)")
}
}
lazy propertieswillSet, didSet или оба на одном propertydidSet ты можешь переприсвоить само property без бесконечного цикла, так как observer не будет вызван снова для этого переприсваиванияProperty observers предоставляют чистый, декларативный способ реагировать на изменения значений без сабклассинга или переопределения методов. Выбор между willSet и didSet зависит от того, нужно ли тебе действовать до или после того, как произойдёт изменение.
Property observers можно применять к lazy stored properties для отслеживания изменений значений до и после присваивания.
Новый — ещё не проверен сообществом
Вы