lazy
?2번에서 호출이 있어야 값을 초기화한다는 말은,
간단히 말해서 lazy로 선언한 코드에 접근해서 실행시키기 전까지는 인스턴스화 되지 않는다고 할 수 있습니다.
lazy closure
?아래는 UILabel을 lazy closure를 이용해 초기화한 예시.
class ViewController: UIViewController {
lazy var label: UILabel = {
let label = UILabel(frame: .zero)
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(label)
}
}
저장 프로퍼티보다 지연 저장 프로퍼티를 사용하는 것의 주요 이점은 코드 블럭이 정확히 해당 변수의 읽기 작업이 일어날 때만 실행된다는 것입니다.
이 경우에는 ViewController 인스턴스가 생성될때 바로 lazy로 선언된 클로저(예시에서 label)가 실행되지 않습니다. 그리고 viewDidLoad()메소드 addSubView(label)에서 처음 호출할 때 실행되고 한 번만 인스턴스화 됩니다. 즉, UILabel 뷰의 생성시점을 늦출 수 있습니다.
궁금한 점, 틀린 내용, 오타 지적, 오역 지적 등 피드백 환영합니다! 댓글로 남겨주세요!
😊 🙏