-
안녕하세요. 그린입니다!
이번 포스팅에서는 lazy var에 대해 알아보겠습니다😃
lazy var???
: lazy는 직역하여 생각해볼때 '게으른'이라는 뜻이있다. 처음 접할때 왜 게으른일까? 뭘 늦게 해주는걸까? 라는 의문이 들었습니다.
lazy var의 역할
: lazy var는 우선 메모리와 관련이 있습니다.
메모리를 보다 효율적으로 관리하기 위해 공식문서에서는 처음 사용되기 전까지는 메모리를 잡아먹는 연산이 이뤄지지 않는다고합니다.
이걸 좀 더 생각해보면 해당 변수가 필요하여 사용되기 전에는 메모리를 차지하지 않고 해당 변수를 사용하려할때 로드되어 메모리를 차지 하는것입니다.
처음 의문을 가진 부분에 답이 되었습니다. "게으른 저장? 처럼 필요할때 한다~" 이런 게으른 느낌이 들었습니다.
lazy var의 코드 구현 및 활용
: 아래처럼 Item 3개가 Items에 묶여 있으며 Items 변수는 선언하는 동시에 리턴 값을 주었습니다.
그런데 각 3개의 Item이 생성되지 않아 데이터가 없어 Items 변수에 lazy 키워드가 없다면 에러가 납니다.
즉, Items 변수가 필요할때 생성되도록하여 초기 실행 시 에러가 나지 않게 됩니다.
let item1 = Item() let item2 = Item() let item3 = Item() lazy var items: [Item] = { return [item1, item2, item3] }()
-> 이렇게 분명 생성되어 필요하지만 처음부터 메모리를 잡아먹지 않아도되는것에 대해 lazy를 선언해주는것 !!!
lazy 사용을 위한 필수적인 사항
- lazy 키워드는 var와 사용
: lazy로 선언한 변수는 초기값이 존재하지 않고 이후 값이 생김으로 let으로 선언할 수 없음으로 당연한 사항 - struct / class
: lazy는 위 두가지 타입안에서만 사용 - lazy는 연산 프로퍼티에서는 사용할 수 없음
: lazy 변수는 처음 불러지면 메모리를 잡게되고 추후 메모리에 잡힌 값을 사용함으로 불려질때마다 연산을 하게되는 연산 프로퍼티에서는 사용할 수 없음
-> lazy 변수에 연산 값을 넣기위해서는 closure를 사용
[참고자료]
https://baked-corn.tistory.com/45
'Swift' 카테고리의 다른 글
Optional Chaining (0) 2021.04.12 GCD & Operation (0) 2021.04.09 Swift Performance (0) 2021.03.01 ARC 심화 (0) 2021.02.17 Type Casting (0) 2021.01.29 - lazy 키워드는 var와 사용