Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] (프로퍼티 구분) Stored Property vs Computed Property 본문

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
}()
Comments