프로퍼티 옵저버(Property Observer)
- 프로퍼티 값의 변화를 관찰하는 것!
- 누군가 프로퍼티에 값을 설정할 때 작동한다.
- 저장 프로퍼티에 추가할 수 있다.
두 가지의 옵션이 존재한다.
- willSet → 값이 저장되기 전에 호출이된다.
- didSet → 새 값이 저장된 직후에 호출이된다.
willSet
- 값이 지정되기 직전에 새로 저장될 값이 파라미터로 전달이된다.
아래와 같이 구현이 가능하다.
var name: String = "Unknown" {
willSet(newName) {
print("현재 이름 = \(name), 바뀔 이름 = \(newName)")
}
}
또한, 파라미터 이름을 생략하여 아래와 같이도 설정할 수 있다.
var name: String = "Unknown" {
willSet {
print("현재 이름 = \(name), 바뀔 이름 = \(newValue)")
}
}
그러면, 언제 정확히 프로퍼티 옵저버가 작동이 될까?
name = "Miro"
위와 같이 새로운 값을 설정해주면, 아래와 같이 print 문이 찍히게 된다.
현재 이름 = Unknown, 바뀔 이름 = Miro
didSet
- 값이 저장된 직후에 이전 프로퍼티 값이 파라미터로 전달이 된다.
아래와 같이 구현이 가능하다.
var name: String = "Unknown" {
didSet(oldName) {
print("현재 이름 = \(name), 바뀌기 전 이름 = \(oldName)")
}
}
그리고, 파라미터를 생략한 아래와 같은 방식으로 코드를 짧게 할 수도 있다.
var name: String = "Unknown" {
didSet {
print("현재 이름 = \(name), 바뀌기 전 이름 = \(oldValue)")
}
}
그러면, 언제 정확히 프로퍼티 옵저버가 작동이 될까?
name = "Miro"
위와 같이 새로운 값을 설정해주면 didSet이 발동이 되는데,
현재 이름 = Miro, 바뀌기 전 이름 = UnKnown
✅ 추가 내용
- willSet & didSet은 같이 구현이 가능하다.
- 순서는 아래와 같다.
- willSet 발동
- 저장 프로퍼티 값 변경
- didSet 발동
📚 참고사항
'Swift' 카테고리의 다른 글
[Swift] 함수 return에대한 고민 (0) | 2023.02.20 |
---|---|
[Swift] Error Handling (0) | 2023.02.11 |
[Swift] 상속(Inheritance) (0) | 2023.02.11 |
[Swift] Lazy (지연 저장 프로퍼티) (0) | 2023.02.11 |
[Swift] Optional Binding(nil-coalescing) (0) | 2023.02.11 |