lazy var инициализируется при первом обращении; до этого значение не создаётся.
Разбор
- Только
var, не let.
- Не thread-safe по умолчанию — гонки при конкурентном первом доступе.
- Удобно для дорогих ресурсов (форматтеры, тяжёлые сервисы).
- Capture
self в lazy closure требует осторожности (часто [unowned self] в классе после init).
Итог
lazy откладывает стоимость init, но требует дисциплины потокобезопасности.