본문 바로가기
앱/iOS(Swift)

[스위프트] 프로퍼티 감시자

by 리드맥 2022. 1. 12.

willSet: 프로퍼티의 값이 변경되기 전에 호출되서 변경되기전 값을 매개변수로 갖는다.
didSet: 프로퍼티의 값이 변경된 후 호출되어서 변경된 후의 값을 매개변수로 갖는다.

class Person{
    var money: Int = 8000 {
        willSet {
            print("일을하면\(money)원에서 \(newValue)9000원이 될 것 같다")
        }
        
        didSet {
            print("일을해서\(money)원에서 \(oldValue)원이 됐다")
        }
    }
}
let work: Person = Person()
print("-----------------------------")
work.money = 9000

결과

-----------------------------
일을하면8000원에서 9000이 될 것 같다
일을해서8000원에서 9000원이 됐어

주의점

var 를 초기화 하는 과정에 didSet, willSet 이 호출되면, didSet, willSet이 호출되지 않음

예를들어 화면을 그릴때 didSet을 통해서 그리면 변수에 didSet을 하지않고

@IBOutlet weak var view:View:{

didSet{

        update()

    }

}

해준다

댓글