일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 정렬 알고리즘
- windosws wbcs
- 스택
- windosw 문자열
- PHP
- pwnable.kr
- 파이썬
- web
- 암호수학
- level13
- 재귀
- OSI
- 시간복잡도
- System
- 파일 시스템
- 미로 탐색 알고리즘
- ftz
- c언어
- LoB
- 두근두근 자료구조
- 자료구조
- SWiFT
- Stack
- C
- Java
- War Game
- ftz level13
- 백준
- HTML
- 큐
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 10.1.2 지연 저장 프로퍼티 본문
반응형
인스턴스를 생성할 때 프로퍼티 값이 필요 없다면 프로퍼티를 옵셔널로 선언해줄 수 있습니다.
struct CoordinatePoint{
var x: Int
var y: Int
}
class Position{
//현재 사람 위치는 모를 수도 있습니다.
var point: CoordinatePoint?
let name: String
init(name: String){
self.name = name
}
}
//이름은 필수지만 위치는 모를 수도 있습니다.
let currentPoint: Position = Position(name: "hyunjin")
//위치를 알게되면 그 때 위치 값을 할당해줍니다.
currentPoint.point = CoordinatePoint(x: 20, y: 10)
10.1.2 지연 저장 프로퍼티
그러나 그것과는 조금 다른 용도로 필요할 때 값이 할당되는 지연 저장 프로퍼티가 있습니다. 지연 저장 프로퍼티는 호출이 있어야 값을 초기화하며, 이때 lazy 키워드를 사용합니다.
상수는 인스턴스가 완전히 생성되기 전에 초기화해야 하므로 필요할 때 값을 할당하는 지연 저장 프로퍼티와는 맞지 않기 때문에 var 키워드를 사용하여 변수로 정의합니다.
지연 저장 프로퍼티는 주로 복잡한 클래스나 구조체를 구현할 때 많이 사용됩니다. 클래스 인스턴스의 저장 프로퍼티로 다른 클래스 인스턴스나 구조체 인스턴스를 할당해야 할 때가 있습니다. 이럴 때 인스턴스를 초기화하면서 저장 프로퍼티로 쓰이는 인스턴스들이 한 번에 생성되어야 한다면? 또, 굳이 모든 저장 프로퍼티를 사용할 필요가 없다면? 이 질문의 답이 지연 저장 프로퍼티입니다. 지연 저장 프로퍼티를 잘 사용하면 불필요한 성능저하나 공간 낭비를 줄일 수 있습니다.
struct CoordinatePoint{
var x: Int = 0
var y: Int = 0
}
class Position{
lazy var point: CoordinatePoint = CoordinatePoint()
let name: String
init(name: String){
self.name = name
}
}
let currentPoint: Position = Position(name: "hyunjin")
//이 코드를 통해 point 프로퍼티로 처음 접근할 때
//point 프로퍼티의 CoordinatePoint가 생성됩니다.
print(currentPoint.point)
반응형
'Programming > Swift' 카테고리의 다른 글
[Swift] 10.1.4 프로퍼티 감시자 (0) | 2021.07.19 |
---|---|
[Swift] 10.1.3 연산 프로퍼티 / 접근자와 설정자 (0) | 2021.07.16 |
[Swift] 구조체와 클래스의 차이 / 식별연산자 (0) | 2021.07.15 |
[Swift] 구조체와 클래스 (0) | 2021.07.15 |
[Swift] 8.2.2 옵셔널 바인딩 (0) | 2021.07.14 |