struct Profile {
lazy var introduction: String = {
print("자기소개 생성 중...")
return "안녕하세요, 저는 Luna입니다."
}()
}
var p = Profile()
print("아직 초기화 안 됨")
print(p.introduction) // 이때 비로소 초기화됨
/*
출력 결과:
아직 초기화 안 됨
자기소개 생성 중...
안녕하세요, 저는 Luna입니다.
*/
class MyViewController: UIViewController {
lazy var redView: UIView = {
let view = UIView()
view.backgroundColor = .red
view.layer.cornerRadius = 10
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(redView) // 이 시점에 redView가 생성됨
}
}
self를 참조해도 안전함 → self가 완전히 초기화된 이후 실행되기 때문💡 주의사항
lazy는 반드시 변수 (var)로 선언해야 함❗️lazy let title = "Hello" // ❌ 오류!