본문 바로가기

Swift '문법'

프로퍼티 옵저버

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