티스토리 뷰

!!! IOS 개발한지 1년이 넘어서 알아버린 내용...

미리 알았다면 더 개발을 잘했을텐데 싶은 내용이었다....!!!!

 

stored property는 한국말로 저장 프로퍼티.

computed property는 한국말로 연산 프로퍼티. (꼼꼼한 재은씨 책 기준)

 

========

class / struct / enum에는 지역변수를 만들 수 있다. (enum은 약간 예외). 이, class나 struct 안에 있는 변수를, property라고 부른다는 것은 이미 알고 있을 것이다

 

하지만 이 property에는 두가지 종류가 있는데....바로 stored property와 computed property 인 것이다!!!

 

 

 

참조) stored property는 class와 struct에서만 사용 가능하다. (enum에서는 불가)

 

var name: String = "SweetDev"

 

우리가 항상 하던 식으로 이렇게 선언할 수도 있지만,

 

[저장프로퍼티]

var name: String! {
    print("name이 프린트 됩니다.")
    return "SweetDev"
}()

클로저를 활용해서, 이렇게도 쓸 수 있는 것이다. 

이 클로저는 생성시 한번만 호출된다. 

 

저장프로퍼티의 클로저는, '연산이나 로직 처리를 통해 얻어진 값을 이용해서 초기화 할 때' 사용된다. 

 

연산 프로퍼티는, 반대로 여러번 사용할 수 있다. 

 

연산프로퍼티는 다른 프로퍼티에 의존적이거나, 특정 계산을 통해 얻을 수 있는 값을 정의 할 때 쓰인다. 

 

연산프로퍼티에는, 그 유명한 (?) get set을 쓸 수 있는데, 

 

get은 필수적으로 써야하고, 프로퍼티의 값을 참조해준다. 

set은 선택적으로 구현해도 되는데, 저장프로퍼티에 값을 할당 / 변경을 하는 것이다. 

 

 

[연산프로퍼티]

class / struct / enum SomeThing {
    var anotherValue: Int = 10
    var value: Int {
        get {
                // 연산
                return anotherValue + 10
        }
        set (param) {
                anotherValue = param
        }
    }
}

 

저기서 set을 안쓰면, 그 프로퍼티는 자동으로 get-only value가 된다. 

 

get도 안써줄 수도 있는데, 

 

그럼

var value: Int {
        return 10
}

 

이렇게 쓸 수 있다. ()가 없다는 점에서 저장 프로퍼티랑 다르다. 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함