본문 바로가기

Mobile/Swift

[Swift - 문법] 프로퍼티 감시자(Property observers)

반응형

프로퍼티 감시자

- 프로퍼티 값이 변하는 것을 감시
- 프로퍼티의 값이 변할 때 값의 변화에 따른 특정 작업을 실행
- 프로퍼티 감시자는 저장 프로퍼티에 적용할 수 있으며 부모클래스로부터 상속받을 수 있습니다.

프로퍼티 감시자에는 "willSet" 과 "didSet" 두 메소드가 존재합니다.

  • willSet : 프로퍼티의 값이 변경되기 전에 호출돼서 변경될 값을 "매개변수"로 갖습니다.
  • didSet : 프로퍼티의 값이 변경된 후에 호출돼서 변경되기 전의 값을 "매개변수"로 갖습니다.

아래 코드에서 예시를 확인하시겠습니다.

class CoinPrint {
    var coin: Int = 0 {
        willSet {
        	// 편의상 print 를 두 번 실행하도록 했습니다.
            print("이 부분은 값이 변경되기 전에 호출됩니다.") 
            print("따라서 현재 값은 coin: \(coin) 이고 새롭게 할당받은 값은 newValue: \(newValue) 입니다.")
        }
        didSet {
            print("이 부분은 값이 변경된 후에 호출됩니다.")
            print("따라서 현재 값은 coin: \(coin) 이고 이전 값은 oldValue: \(oldValue) 입니다.")
        }
    }
}

var value: CoinPrint = CoinPrint()
value.coin += 100
// 이 부분은 값이 변경되기 전에 호출됩니다. 
// 따라서 현재 값은 coin: 0 이고 새롭게 할당받은 값은 newValue: 100 입니다.
// 이 부분은 값이 변경된 후에 호출됩니다. 
// 따라서 현재 값은 coin: 100 이고 이전 값은 oldValue: 0 입니다.

 

반응형