Programing Langauge/swift

property 학습하기 (4) [ Property Observer ]

Hamp 2024. 8. 25. 19:35
반응형

 

이번에는 프로퍼티 observer(관찰자)를 알아보자 

 

Property Observer ( 프로퍼티 관찰자 )

프로퍼티 값의 변화를 관찰하는 것으로, 저장 프로퍼티에 추가할 수 있다.

프로퍼티에 할당되는 새 값이 현재 값과 동일하더라도 속성 값이 설정되면 호출된다.

 

종류

  willSet didSet
호출 시기 값이 저장되기 직전 값이 저장된 직후
익명 파라미터 이름 newValue oldValue

 

호출 순서

옵저버는 연산 프로퍼티에 추가할 수 없지만, override 를 통해 추가할 수 있다.

실제르는 거의 안쓰지만 호출 순서를 쉽게 알아보기 위해 적용해보자

 

class Human {
    var name = "Unknown"
    var alias: String {
        get {
            print("Huamn getter")
            return name + " 바보"
        }
        set {
            print("Huamn setter")
            name = newValue + "별명에서 붙여진 이름"
        }
    }
}


class Kayle: Human {
    override var alias: String {
        willSet {
            print("called Kayle willSet 현재 alias = \(alias), 바뀔 alias = \(newValue)")
        }
        didSet {
            print("called Kayle didSet 현재 alias = \(alias), 바뀌기 전 alias = \(oldValue)")
        }
    }
}

let kayle: Kayle = .init()
kayle.alias = "Kayle"

/*

Huamn getter
Huamn getter
called Kayle willSet 현재 alias = Unknown 바보, 바뀔 alias = Kayle
Huamn setter
Huamn getter
called Kayle didSet 현재 alias = Kayle별명에서 붙여진 이름 바보, 바뀌기 전 alias = Unknown 바보

*/

 

willSet -> set -> didSet 순으로 호출되는걸 확인할 수 있다.

반응형