프로퍼티 감시자 til32
프로퍼티 감시자
프로퍼티 감시자는 프로퍼티 값이 변경될 때 원하는 동작을 수행할 수 있도록 도와준다. 이들은 저장프로퍼티 안에서 블록을 만들며 willset과 didset이라는 키워드를 사용한다.
willset과 didset
struct Money {
var currencyRate: Double = 1100 {
willSet(newRate) {
print("환율이 \(currencyRate)에서 \(newRate)로 변경될 예정입니다")
}
didSet(oldRate) {
print("환율이 \(oldRate)에서 \(currencyRate)로 변경 되었습니다.")
}
}
...
}
해당 코드에서 willset과 didset의 역할은은 currencyRate값을 변경할 때, Willset와 didset이 동작한다.
이때 매개변수를 지정하지 않으면 암시적으로 oldValue와 newValue로 지정된다. 이때 연산프로퍼티는 get, set으로 지정되는데 연산 프로퍼티 안에서는 프로퍼티 감시자를 만드는 것이 불가능한데, 그 이유는 저장되는 값이 변경될때 호출되는것이기 때문이다.
결국 프로퍼티 감시자 기능은 함수 메소드 클로저 타입등 지역, 전역변수에도 사용이 가능하다.
댓글
