ios개발

Swift - Getters and Setters 스위프트 get, set

studying develop 2021. 7. 24. 00:45

swift

Getters and Setters

기본적으로 상수, 변수, 프로퍼티들 그리고 subscript들은 자동적으로 그들이 속한 상수,변수,프로퍼티 또는 섭스크립트와 동일한 수준의 접근 제한 레벨을 갖는다. 

 

우리는 아래에서 한 변수의 get - 변수를 참조할때, set - 변수를 설정할 때의 접근 제한 레벨을 다르게 설정하는 법에 대해 알아볼 것이다.

 

즉 변수를 가져와 사용할때는 private인데, 변수에 값을 넣을때는 internal일 수 있다!!

 

struct TrackedString {
    private(set) var numberOfEdits = 0
    var value: String = "" {
        didSet {
            numberOfEdits += 1
        }
    }
}

위에서 TrackedString 구조체랑 value 프로퍼티는 접근제한 레벨이 설정 안되어있다. 그래서 접근제한 레벨 초기값인 internal로 지정되어있다. 하지만 numberOfEdits 프로퍼티가 private(set)를 통하여 numberOfEdits 프로퍼티의 getter는 여전히 internal 접근 제한 레벨이고, setter에 대한 접근 레벨은 private임을 나타낸다. 

 

그럼으로서 TrackedString이 numberOfEdits를 변수 선언부분 안에서만 수정 가능하게 하지만, TrackedString 선언 밖에서는 set은 불가능하고 get만 internal하게 가능하도록 한다.

 

즉 set과 get의 접근 제한 레벨을 분리하여 설정할 수 있다.