[Swift] - 프로퍼티

sai06266·2023년 9월 1일
0

Swift 문법

목록 보기
4/9

프로퍼티란?

클래스, 구조체, 열거형 등의 타입 내부에 선언되는 변수 또는 상수 이름

프로퍼티(Property)

저장 프로퍼티(Stored Properties)

저장 프로퍼티는 클래스 또는 구조체 내부에 변수 또는 상수로 선언된다.
값을 인스턴스 내에 저장하고, 인스턴스가 생성될 때 초기값을 할당할 수 있다.
초기값을 지정하지 않으면 옵셔널 타입으로 자동으로 초기화된다.

let name = ""
var age = 25

연산 프로퍼티(Computed Properties)

연산 프로퍼티는 실제 값을 저장하지 않고, 특정 계산 로직을 실행하여 값을 반환한다.
get 블록을 사용하여 값을 읽고, set 블록을 사용하여 값을 설정할 수 있다.

var wallet: Int = 1000
var counter: Int {
    get {
        return wallet
    }
    set(money) {
        wallet += money
    }
}

프로퍼티 옵저버 (Property Observers)

프로퍼티 옵저버는 프로퍼티의 값이 변경될 때 특정 동작을 수행하는 기능을 제공한다.
willSet은 프로퍼티에 새로운 값이 할당되기 직전에 호출되고, didSet은 새로운 값이 할당된 직후에 호출된다.
willSet에는 newValue가, didSet에는 oldValue가 자동으로 전달된다.

class Account {
    var credit: Int = 0 {
        willSet {
            print("잔액이 \(credit)에서 \(newValue)원으로 변경될 예정입니다.")
        }
        didSet {
            print("잔액이 \(oldValue)에서 \(credit)으로 변경되었습니다.")
        }
    }
}
let myAccount = Account()
myAccount.credit = 1000

지연 저장 프로퍼티(Lazy Stored Properties)

지연 저장 프로퍼티는 프로퍼티가 처음으로 사용될 때까지 초기화되지 않고, 처음 접근될 때 초기화된다.
주로 초기화 비용이 많이 드는 프로퍼티에 사용 -> 불필요한 성능 저하나 공간 낭비 줄일 수 있다.
lazy 키워드를 사용하고, let은 지연 저장 프로퍼티로 사용할 수 없다 -> 무조건 var

class SomeClass {
    lazy var expensiveProperty: Int = {
        // 초기화 코드
        return 4
    }()
}

타입 프로퍼티(Type Properties)

타입 프로퍼티는 특정 타입 자체에 속하는 프로퍼티로, 모든 인스턴스가 공유한다.
일반적인 값 타입의 경우 static 키워드를 사용하여 선언하고,
클래스의 경우 class 키워드를 사용하여 상속 가능한 타입 프로퍼티를 선언할 수 있다.

struct Math {
    static let pi = 3.14159265359
}

0개의 댓글