본문 바로가기

Swift

[Swift] lazy는 왜 쓰는지 아시나요?

`lazy`란?

> iOS는 App의 사용량이 너무 높아지면 앱을 죽이기 때문에, 개발자는 처음부터 메모리 관리를 신경쓰며 코드를 짜는게 매우 중요하다.
따라서 개발자는 실제로 필요한 경우가 아니라면, 비싼 코스트의 작업을 하는것을 지양해야 한다. (복잡한 allocation을 예로 들 수 있다.)

Swift는 비싼 코스트의 작업을 in-time 계산할 수 있게 하는 `lazy variables`라는 메커니즘을 제공한요! `lazy variables`는 변수가 처음 요청되었을 때만 사용자가 지정한 함수를 사용하여 생성하기 때문에 메모리에 관리를 할 수 있다. 만약 요청되지 않는다면, 지정된 함수는 절대 불리지 않고, 이는 processing time을 절약해줄 수 있다!

정리하자면.. `lazy` 키워드를 붙여서 프로퍼티를 선언하면 단어 뜻 그대로 다른 프로퍼티보다 지연된다. 즉, 해당 프로퍼티가 처음 사용되기 전까지는 메모리에 올라가지 않는다!

그렇다면! `lazy`의 장점은 뭘까?

> "메모리를 효율적으로 관리할 수 있다."

예를 들어, 복잡한 앱일수록 뷰가 로드될 때 모든 인스턴스를 생성하여 메모리에 올리면 과부하로 앱이 종료될 위험이 따른다. 하지만 각 인스턴스들이 사용될 때 생성하면 메모리를 효율적으로 관리할 수 있다.



글을 작성하면서 왜 `lazy let` 은 안쓰는지에 대해 생각해봤다.


그 이유는 공식 문서에 아주 잘 나와있는데, 프로퍼티가 초기화되기 전에 항상 값을 가지고 있어야 하는데 값이 없을 수도 있는 경우를 고려하여 `lazy let`이 아닌 `lazy var`로 선언해야 하는 걸 배웠다!