'getter'를 사용해서 어떤 property의 값을 계산하지 않고, 단지 그 값이 언제 바뀌는지 확인하고 싶을 때 computed property 대신에 사용하는 property이다.
var pizzaInInches: Int = 10 {
willSet {
print(pizzaInInches) // 10
print(newValue) // 8
}
didSet {
print(oldValue) // 10
print(pizzaInInches) // 8
}
}
pizzaInInches = 8
위의 코드에서 볼 수 있듯 willSet은 pizzaInInches에 newValue가 설정되기 직전에 실행되어 위와 같은 값을 갖게되고, didSet은 newValue가 설정된 직후에 실행되어 위와 같은 값을 갖게된다.
var pizzaInInches: Int = 10 {
willSet {
}
didSet {
if pizzaInInches >= 18 {
print("Invalid size specified, pizzaInInches set to 18.")
pizzaInInches = 18
}
}
}
pizzaInInches = 33
print(pizzaInInches) // 18
didSet에 위와 같은 if구문 등을 사용해 observed property가 값이 바뀌는지 확인하고, 코드를 실행하기도 함을 알 수있다.