티스토리 뷰

인스턴스 프로퍼티

- 인스턴스 마다 저장된다.

 

타입 프로퍼티

- static 키워드 사용

- 하나로 다같이 공유

- 데이터 영역에 영구적으로 저장된다

- 어차피 모두 같은 값을 쓸 거니까 값도 같이 넣어준다

struct User {
	static let shared = User()
	let name = "이름"
}

보통 이렇게 인스턴스를 shared라는 이름을 가진 타입 프로퍼티에 넣어주고

외부에서 인스턴스를 생성하지 않고 타입 프로퍼티를 사용하여 인스턴스 메서드나 프로퍼티에 접근한다

(필요할 때마다 매번 인스턴스를 생성하면 비효율적이기 때문)

print(User.shared.name)

 

 

저장 프로퍼티

지연 저장 프로퍼티

 - lazy var 키워드

 - lazy는 var 와 함께 사용한다 let은 불가

    - 왜요?? 사용될 때 초기화되기 때문에 초기화 될 때 nil에서 값이 생겨나는 느낌?!?

 - 인스턴스가 생성되었더라도, lazy가 선언되어 있다면 이 프로퍼티는 사용 시점에 초기화가 된다! (인스턴스 생성 시점과 무관)

 - 즉, 사용하지 않으면 초기화되지 않음(공간 차지x)

 

 

연산 프로퍼티

 - 메모리 공간을 차지하지 않음

 - 공간을 차지하지 않으니 초기화를 할 필요가 없음!

 - 다른 저장 프로퍼티의 값을 가지고 연산을 하기 때문에 저장 프로퍼티가 필요

 - 연산한 값을 간접적으로 제공

 - get은 필수, set은 선택

 - var 만 가능

댓글
최근에 올라온 글
«   2024/09   »
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
글 보관함