이번에는 프로퍼티 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 순으로 호출되는걸 확인할 수 있다.
'프로그래밍언어 > swift' 카테고리의 다른 글
디스패치 학습하기 (1) [ 정의, 종류, vtable, witness table ] (0) | 2024.08.25 |
---|---|
접근 제한자 (0) | 2024.08.25 |
property 학습하기 (3) [ Type Property ] (0) | 2024.08.25 |
property 학습하기 (2) [ computed Property ] (0) | 2024.08.25 |
property 학습하기 (1) [ Stored Property ] (0) | 2024.08.25 |