티스토리 뷰
!!! 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
}
이렇게 쓸 수 있다. ()가 없다는 점에서 저장 프로퍼티랑 다르다.
'macOS, iOS' 카테고리의 다른 글
[iOS] SceneDelegate의 역할은 무엇일까? (0) | 2019.12.26 |
---|---|
[swift] memberwise initializer (0) | 2019.12.20 |
붙여넣기 시 복사해온 글의 서식(색깔, 폰트)를 없애고 싶을 때 (0) | 2019.12.20 |
언제 self를 붙여주는지? (0) | 2019.12.20 |
[swift] ARC: Auto Reference Counting (0) | 2019.12.20 |