본문 바로가기

Mobile/Swift

[Swift - 문법] 프로퍼티(Property) - 3. 타입 프로퍼티

반응형

1. 타입 프로퍼티

타입 프로퍼티는 각각의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티입니다. 아래에서 살펴보겠지만 인스턴스를 정의한 후에도 타입 프로퍼티에 직접적으로 영향을 주고, 같은 클래스로 정의된 인스턴스들에도 일괄적으로 영향을 줍니다. 모든 인스턴스에서 공용으로 접근하고 값을 변경할 수 있는 변수 등을 정의할 때 유용합니다.

타입 프로퍼티의 종류
    (1) 저장 타입 프로퍼티
        - 변수와 상수로 선언 가능
        - 초기값 설정이 반드시 필요
    (2) 연산 타입 프로퍼티
        - 변수로만 선언 가능

2. 예시 코드


class User {
    // 저장 타입 프로퍼티
    static var age: Int = 0
    
    // 저장 인스턴스 프로퍼티
    var instanceAge: Int = 0 {
        didSet {
            Self.age = instanceAge - 2
        }
    }
    
    // 연산 타입 프로퍼티
    static var ageValue: Int {
        get {
            return age
        }
        
        set {
            age = newValue
        }
    }
}

// 저장 타입 프로퍼티는 인스턴스를 정의하기 전에 값을 할당할 수 있습니다.
User.age = 31
print(User.age) // 31

let classInstance: User = User()
"""
인스턴스를 정의한 후에도 타입 프로퍼티에 직접적으로 영향을 줄 수 있습니다.
classInstance의 instanceAge 에 20의 값을 주면 didSet에 의해서
User.age의 값이 18으로 저장됩니다.
"""
classInstance.instanceAge = 20

print(User.age) // 18
print(User.ageValue) // 18

let newInstance: User = User()
print(User.age) // 18
newInstance.instanceAge = 500
print(User.age) // 498

 

반응형