Menu
Menu
Posts List
  1. Swift:
    1. 기본 개념
    2. 장점
    3. 주의사항
    4. 일반 프로퍼티와의 차이

lazy var

Swift:

Swift에서 lazy var변수가 실제로 사용되기 전까지 초기화를 지연시키는 특성을 가진 저장 프로퍼티이다.


기본 개념

1
2
3
4
5
6
class ViewController {
lazy var heavyView: UIView = {
print("View Initialized")
return UIView()
}()
}
  • heavyView는 실제로 접근되기 전까지 메모리에 올라가지 않음.
  • 메모리 효율성과 성능 최적화를 위한 전략으로 많이 사용됨.

장점

장점 설명
⏱️ 지연 초기화 변수가 필요할 때까지 초기화를 미룸 → 초기 로딩 속도 향상
🧠 불필요한 계산 방지 사용되지 않는 경우 아예 초기화되지 않음
🧹 메모리 절약 앱 실행 중 실제로 사용되는 시점에만 메모리 차지
🛠 클로저 기반 초기화 가능 복잡한 초기화 로직을 클로저로 구성 가능

주의사항

  • lazy는 반드시 var 로 선언해야 하며, let과 함께 사용할 수 없음.
  • struct에서 mutating 메서드 안이 아닌 경우 self 내부에서 lazy 프로퍼티에 접근할 수 없음.
  • 다중 스레드 환경에서는 초기화 시점 동시 접근 문제가 발생할 수 있어 주의가 필요함.

일반 프로퍼티와의 차이

항목 일반 프로퍼티 (var) 지연 저장 프로퍼티 (lazy var)
초기화 시점 인스턴스 생성 시 최초 접근 시
메모리 사용 항상 점유 접근 전까지는 사용되지 않음
성능 빠르게 접근 가능 첫 접근 시 초기화 비용 발생 가능
선언 위치 어디서나 사용 가능 인스턴스 타입에서만 사용 가능 (static, let 불가)