관리 메뉴

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

[iOS - swift] stored property(저장 프로퍼티)와 computed property(계산 프로퍼티) 본문

iOS 기본 (swift)

[iOS - swift] stored property(저장 프로퍼티)와 computed property(계산 프로퍼티)

jake-kim 2021. 1. 13. 22:28

개념 차이

  • stored property: 값을 메모리에 저장하는 용도
  • computed property: 이 자체는 값을 메모리에 저장해놓지 않고 필요할때 이미 메모리에 저장된 값(stored property)을 계산하여 get, set 하는 용도
  • computed proeprty가 stored property에 의존
  • '=' 기호로 값을 받으면 stored property, '='기호가 없으면 computed property

stored property

  • 기본형
let value = 3
  • 주의: lazy var도 stored property임을 조심 (computed property가 아님)
    computed property는 이미 만들어진 stored property를가지고 get, set을 하지만 lazy var같은 경우는 독립적으로 객체를 만들기 때문
lazy var bannerView: GADBannerView = {
    let banner = GADBannerView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 50))
        return banner
}()

// stored property인 이유: { ... }()라는 클로저 함수로 값을 바로 저장하는 형태
  • stored property는 extension에서 추가하지 못하는 반면에 Computed property는 추가 가능

Computed Property

  • 주의: 아래 코드는 computed property지만 잘못쓰고 있는 형태 (값을 저장할 stored property가 없기 때문)
class Point {
    var x: Int {
        get {
            return x
        }
        set(newValue) {
            x = newValue * 3
        }
    }
}
  • 아래 코드는 computed property
class Point {

    var value : Int = 1

    var x: Int {
        get {
            return value
        }
        set(newValue) {
            value = newValue * 2
        }
    }
}

* computed property 응용 - @IBInspectable과 사용: ios-development.tistory.com/310

Comments