Properties

윤주현·2023년 8월 18일

Swift

목록 보기
13/13

Stored Property

struct StoredProperties {
    var stored: String = "stored"

    // Lazy
    // 호출될 때까지 초기화되지 않는다.
    // 무거운 프로퍼티를 만들때 사용한다.
    lazy var importer = "lazy"

    // Property Observers
    var storedObserver: String {
    	// 프로퍼티가 저장되기 전에 실행시킬 동작을 지정하는 곳
        // newValue를 통해 저장 될 값에 접근 가능
        willSet {
            print("willSet was called")
            print("stored is now equal to \(self.stored)")
            print("stored will be set to \(newValue)")
        }
		// 프로퍼티가 저장되고 난 다음 실행시킬 동작을 지정하는 곳
        // old value 를 통해 저장되기 전 값에 접근 가능
        didSet {
            print("didSet was called")
            print("stored is now equal to \(self.stored)")
            print("stored was previously set to \(oldValue)")
        }
    }
}

Computed Property

struct ComputedProperties {

    var computed: String {
        return "computed"
    }

    private var _stored = "stored"

    var shortHand: String {
        get {
            return _stored
        }
        set {
            _stored = newValue
        }
    }
}

Computed Property vs Method

class CircleProperty {
    var radius: Double = 0

    var area: Double { // Property?
        get {
            return radius * radius * Double.pi
        }
    }
}

class CircleMethod {
    var radius: Double = 0

    func area() -> Double { // or argumentless method?
            return radius * radius * Double.pi
    }
}

computed property는 값에 접근하려고 할때 많이 사용하고 메소드는 복잡한 계산을 하거나 현재 상태를 바꾸는 경우에 사용한다.

0개의 댓글