프로퍼티(Property)는 클래스, 구조체, 열거형 내부에서 값을 저장하거나 계산하는 변수 또는 상수를 의미합니다.
Swift에서는 두 가지 주요 프로퍼티가 존재합니다:
- 저장 프로퍼티(Stored Property): 실제 데이터를 저장하는 공간
- 연산 프로퍼티(Computed Property): 특정 연산을 통해 값을 계산하여 반환
struct Person {
var name: String // 저장 프로퍼티
let birthYear: Int // 저장 프로퍼티 (상수)
}- 구조체나 클래스의 인스턴스가 생성될 때 메모리에 함께 저장됩니다.
let으로 선언하면 초기화 후 변경할 수 없습니다.- 저장 프로퍼티는 기본적으로 모든 인스턴스가 고유한 값을 가짐 (값 타입에서는 복사됨)
struct Circle {
var radius: Double
var diameter: Double {
return radius * 2 // get만 있는 연산 프로퍼티 (읽기 전용)
}
}- 값을 저장하지 않고, 계산된 값을 반환합니다.
- 내부적으로는
get { ... }이 생략된 형태입니다. - 실제 메모리 공간은 존재하지 않고, 호출 시 계산하여 반환합니다.
var area: Double {
get {
return radius * radius * 3.14
}
}
get키워드만 있으면 읽기 전용 연산 프로퍼티입니다.
| 항목 | 저장 프로퍼티 | 연산 프로퍼티 |
|---|---|---|
| 메모리 | 값을 저장함 (메모리 공간 차지) | 메모리 없음, 호출 시 계산 |
| 실행 시점 | 인스턴스 생성 시 메모리 할당 | 호출될 때마다 계산 실행 |
| 예시 | var name = "Pepper" |
var area: Double { return r * r * π } |
| 구분 | 역할 | 특징 |
|---|---|---|
| 저장 프로퍼티 | 상태를 저장 | 인스턴스와 함께 메모리에 저장 |
| 연산 프로퍼티 | 계산된 값을 제공 | 실제 저장되지 않고 호출 시 계산 |
연산 프로퍼티는 효율적인 계산과 로직 분리에 유리하지만, 반복 호출 시 성능을 고려해야 합니다.
다음 챕터 2-2. getter / setter에서는
**연산 프로퍼티 내부의 구성 요소인 get과 set**을 보다 구체적으로 다루어 보겠습니다. ✍️