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 불가) |