[iOS][Swift] Types of Properties - 속성의 종류

Jay·2023년 8월 30일
0

iOS

목록 보기
31/47

Swift의 클래스(Class)와 구조체(Struct)는 데이터 모델링의 핵심 구성 요소입니다. 이들의 속성은 데이터를 저장, 추적 및 조작하는 데 중요한 역할을 합니다.

1. 저장 속성(Stored Properties)

  • 정의:
    저장 속성은 클래스나 구조체의 인스턴스와 연결된 값을 저장하는 변수나 상수입니다.
  • 특징:
    클래스와 구조체 모두에서 사용될 수 있습니다.
struct Rectangle {
    var width: Double
    let height: Double
}
let square = Rectangle(width: 10.0, height: 10.0)

2. 계산 속성(Computed Properties)

  • 정의:
    계산 속성은 값을 저장하지 않습니다. 대신, 그들은 다른 속성의 값을 기반으로 값을 반환하거나 설정하는 연산자(getter와 setter)를 제공합니다.
  • 특징:
    클래스, 구조체, 열거형(enum)에서 모두 사용할 수 있습니다.
struct Square {
    var side: Double
    
    var area: Double {
        get {
            return side * side
        }
        set(newArea) {
            side = sqrt(newArea)
        }
    }
}

3. 타입 속성(Type Properties)

  • 정의:
    인스턴스 속성은 특정 클래스나 구조체의 인스턴스에 속하는 값이지만, 타입 속성은 타입 자체에 속하는 값입니다.
  • 특징:
    타입 속성은 static 키워드를 사용하여 선언됩니다. 클래스에서는 class 키워드를 사용하면 오버라이드가 가능합니다.
struct MathConstants {
    static let pi = 3.141592653589793
}
let valueOfPi = MathConstants.pi

4. 속성 감시자(Property Observers)

  • 정의:
    속성 감시자는 속성의 값이 변경될 때 원하는 작업을 수행할 수 있게 합니다.
  • 특징:
    willSet은 값이 설정되기 직전에 호출되며, didSet은 값이 설정된 직후에 호출됩니다. 계산 속성에는 사용할 수 없고, 저장 속성에만 사용됩니다.
class LightSwitch {
    var isOn: Bool = false {
        willSet {
            print("The light switch is about to change to \(newValue)")
        }
        didSet {
            print("The light switch has changed from \(oldValue) to \(isOn)")
        }
    }
}

Swift에서의 속성은 데이터를 효과적으로 구조화하고, 코드의 동작 방식을 정의하는 데 중요한 역할을 합니다. 이를 잘 활용하면, 코드의 가독성과 유지 보수성을 크게 향상시킬 수 있습니다.

profile
Junior Developer

0개의 댓글