[swift] 속성(Properties)

Swift에서는 속성이 주어진 값에 대해서 접근할 때 사용되는 특별한 방법으로 정의됩니다. 속성은 값에 접근하기 위한 게터(getter)와 값을 설정하기 위한 세터(setter)를 가질 수 있습니다. 또한, 프로퍼티 감시자(property observer)를 사용하여 속성 값이 변경될 때 추가 작업을 수행할 수도 있습니다.

저장 속성(Stored Properties)

가장 기본적인 형태의 속성으로, 클래스 또는 구조체 내에 변수 또는 상수로 선언됩니다.

struct Rectangle {
    var width: Double
    var height: Double
}

위의 예제에서 widthheight 속성은 값을 저장하기 위한 저장 속성입니다.

연산 속성(Computed Properties)

연산 속성은 특정 연산을 통해 값을 동적으로 계산하는 속성입니다. 프로퍼티에 접근할 때마다 해당 연산이 수행됩니다.

struct Circle {
    var radius: Double
    var diameter: Double {
        get {
            return radius * 2
        }
        set(newDiameter) {
            radius = newDiameter / 2
        }
    }
}

위의 예제에서 diameter는 읽기 전용 속성으로서, radius를 기반으로 동적으로 값을 계산합니다.

프로퍼티 감시자(Property Observers)

프로퍼티 감시자를 사용하여 속성의 값이 변경될 때 추가 로직을 수행할 수 있습니다. willSetdidSet을 사용하여 속성이 변경되기 직전과 직후에 원하는 작업을 수행할 수 있습니다.

class StepCounter {
    var totalSteps: Int = 0 {
        willSet(newTotalSteps) {
            print("총 걸음 수가 \(newTotalSteps)로 변경될 예정입니다.")
        }
        didSet {
            if totalSteps > oldValue {
                print("총 걸음 수가 \(totalSteps - oldValue)만큼 증가했습니다.")
            }
        }
    }
}

위의 예제에서 totalSteps 속성의 값이 변경될 때마다 메시지를 출력하는 예시를 볼 수 있습니다.

Swift의 속성을 통해 재사용 가능한 코드를 작성하는 데 유용하며, 속성 감시자를 사용하여 데이터 변화에 따른 작업을 보다 효과적으로 수행할 수 있습니다.

더 많은 정보는 Swift 공식 문서에서 확인할 수 있습니다.