lazy var 정리
2021. 4. 13. 20:50ㆍSwift 기본 문법
이번에 미세먼지 앱을 만들어 보면서 lazy란 개념을 공부했습니다.
기존에 lazy라는 게 있다고 들어는 봤지만, 어떻게 쓰는지도 몰랐고 왜 쓰는지도 몰랐어요.
하지만 이번 기회에 왜 쓰는지 정리해보고 싶어서 공부를 시작해보았습니다.
lazy는 초기 init시에 초기화되는 것이 아니라 호출될 때 생성이 되면서 메모리에 올라가며 이후 같은 변수를 사용 시 다시 초기화가 진행되지 않고 이전에 생성된 변수를 그대로 사용하더라고요.
또한 클래스나 구조체 내에서만 사용이 가능하다는 특징이 있었습니다.
아래는 예시 코드입니다
class Person {
var name: String
var age: Int
// 초반 init때 생성되지 않음
lazy var info: String = {
return "이름 : \(self.name)\n나이 : \(self.age)"
}()
init(name: String, age: Int) {
self.name = name
self.age = age
}
func printInfo() {
print(info)
}
}
var p = Person(name: "김부성", age: 18)
// 처음 호출 될때 생성
p.printInfo()
만약 호출이 되지 않는다면 객체를 생성하지 않기 때문에 메모리 낭비를 줄일 수 있어 보여요.
또한 초기화 시점이 같을 경우 속성에 접근할 때 에러가 날 수 있는데, lazy를 사용함으로써 해결이 가능합니다.
만약 lazy가 없었다면 if로 일일이 값이 있는지 없는지 확인해주었어야겠지만, lazy를 사용함으로써 간편하게 구현이 가능하다는 게 장점이겠네요 :)
lazy를 사용하는 이유
- 지연 저장을 통해 메모리 낭비를 줄임
- 초기화 시점이 같을 때 접근할 수 있음
lazy를 사용했을 때 메모리 관리가 어려워질 수도 있다는 글을 본 것 같은데, 나중에 다시 한번 정리해보도록 하겠습니다
'Swift 기본 문법' 카테고리의 다른 글
defer (1) | 2022.05.24 |
---|