프로퍼티 감시자 til32

future0159 1월 31일 PM 09:05 5 1
future0159 Profile Image Level 9
1

프로퍼티 감시자

프로퍼티 감시자는 프로퍼티 값이 변경될 때 원하는 동작을 수행할 수 있도록 도와준다. 이들은 저장프로퍼티 안에서 블록을 만들며 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으로 지정되는데 연산 프로퍼티 안에서는 프로퍼티 감시자를 만드는 것이 불가능한데, 그 이유는 저장되는 값이 변경될때 호출되는것이기 때문이다.
결국 프로퍼티 감시자 기능은 함수 메소드 클로저 타입등 지역, 전역변수에도 사용이 가능하다.



댓글