// 속성 감시자
// wilSet : 속성이 저장되기 직전에 호출됨, 파라미터 생략하면 newValue
// didSet : 속성에 값이 저장된 후 호출됨, 파라미터 생략하면 oldValue
// var만 사용 가능
// 지연저장 속성과 계산속성에는 속성 감시자를 추가 불가능
// 그렇다고 속성을 감시할수 없는 것은 아님 지연 저장속성의 경우 초기화 코드에서, 계산 속성에서는 set 블록에서 필요한 코드를 구현한다.
// 계산속성에서는 한가지 예외가 있는데 서브클래스에서 계산속성을 오버라이딩하고 여기서 프로퍼티 옵저버를 구현하는 것은 가능
// wilSet 블록과 didSet블록 중 반드시 하나는 구현해야 속성 감시자가 된다.
class Size {
var width = 0.0 {
willSet {
print("willSet", width, "=>", newValue)
}
didSet {
print("didSet", oldValue, "=>", width)
}
}
}
let s = Size()
s.width = 123