Swift에서 프로퍼티 옵저버는 프로퍼티의 값이 설정되거나 변경될 떄 실행되는 코드를 정의하는 방법입니다.
프로퍼티 옵저버는 저장 프로퍼티에 사용되며, 프로퍼티의 값이 변경될 때 특정 작업을 수행할 수 있습니다.
두가지 프로퍼티 옵저버가 있습니다. 'willSet' 과 'didSet'
'willSet' : 새로운 값이 저장되기 직전에 호출됩니다.
'didSet' : 새로운 값이 저장된 직후에 호출됩니다.
예제 코드
아래 예제에서는 'score' 라는 프로퍼티에 프로퍼티 옵저버를 추가하여 값이 변경될 떄마다 로그를 출력하는 방법을 보여줍니다.
class Player {
var score: Int = 0 {
willSet(newScore) {
print("Score will be set to \(newScore)")
}
didSet {
if score > oldValue {
print("Score increased by \(score - oldValue)")
} else {
print("Score decreased by \(oldValue - score)")
}
}
}
}
let player = Player()
player.score = 10
// 출력: Score will be set to 10
// 출력: Score increased by 10
player.score = 5
// 출력: Score will be set to 5
// 출력: Score decreased by 5
설명
1. 프로퍼티 선언:
'score' 라는 저장 프로퍼티를 선언합니다.
var score: Int = 0'는 기본 값을 0으로 설정합니다.
2. 'willSet' 옵저버:
새로운 값이 저장되기 직전에 호출됩니다.
'newScore' 라는 매개변수를 통해 새로운 값을 받을 수 있습니다.
새로운 값이 설정되기 직전에 "Score will be set to ..." 메세지를 출력합니다.
3. 'didSet' 옵저버:
새로운 값이 저장된 직후에 호출됩니다.
'oldValue' 라는 자동 생성된 상수를 통해 이전 값을 참조할 수 있습니다.
새로운 값이 이전 값보다 크면 "Score increased by ... "메세지를, 작으면 "Score decreased by ... " 메세지를 출력합니다.
이 예제를 통해 프로퍼티 옵저버를 사용하여 저장 프로퍼티의 값이 변경될 떄 추가 작업을 수행 할 수 있습니다.
'willSet' 과 'didSet' 은 데이터 유효성 검사, UI 업데이트, 디버깅 등의 용도로 유용하게 사용될 수 있습니다.
'Swift '문법'' 카테고리의 다른 글
Extension (0) | 2024.08.08 |
---|---|
타입 캐스팅 (0) | 2024.08.07 |
ARC와 메모리 누수 (0) | 2024.08.02 |
접근제한자 (0) | 2024.08.01 |
프로토콜(Protocols) (0) | 2024.07.31 |