iOS 기본 (swift)
[iOS - swift] (프로퍼티 구분) Stored Property vs Computed Property
jake-kim
2021. 6. 19. 13:56
Stored Property vs Computed Property
- Stored Property는 초기화 값이 존재하는 프로퍼티
- Computed Property는 최가화 값이 존재하지 않는 프로퍼티
- 예시)
- p1은 초기화 값이 존재하므로 Stored Property
- p2는 초기화 값이 존재하지 않으므로 Computed Property
- p3는 바로 초기화값이 존재하지 않지만 init구문에서 p3를 초기화해주므로 Stored Property
class PropertyTest {
// 1
var p1: Int = 1
// 2
var p2: Int {
get {
return p1 + 2
}
set {
print(newValue)
}
}
// 3
var p3: Int {
didSet { print(p3) }
}
init(p3: Int) {
self.p3 = p3
}
}
{ get set }, didSet, willSet
- didSet, willSet이 있으면 초기화 값이 존재하는 Stored Property
- { get set }이 있으면 초기화 값이 없는 Computed Property
- 예시)
- 위 코드에서 p3: Int 초기화 값이 없고 init구문을 확인하여 Stored Property라고 판단했지만 블럭 내에 didSet만 보고도 Stored Property라고 판단 가능
암기 방법
- 등호 = 가 있거나 didSet, willSet을 사용하면 > Stored property
- 등호가 없고 get, set이 존재하면 > Computed property
- 단, 등호가 없어도 var, Optional로 선언되어 있으면 Stored property
/// Stored property
var sumVal1: Int = 1
/// Stored property
var sumVa2: Int?
/// Computed Property
var sumVal3: Int = {
return 1
}()