인프런 커뮤니티 질문&답변

초급자님의 프로필 이미지

작성한 질문수

앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지

활용-3 앱 / 코드로 UI 짜기 (활용 앱20강)

활용-3 앱 /코드로 UI 짜기 영상에서 문의 드립니다.

24.05.30 22:18 작성

·

114

0

영상 11분 20초 경 lazy var를 이용해 view.addSubview(emailTextFieldView)를 사용할 수 있다고 하셨는데 이 부분이 UIViewControllerview를 카리키는것이 아닌 클로저 내부에서 이미 선언한 let view = UIView()의 변수 아닌가요? 해당 코드가 왜 정상적으로 동작하는지 영상이 잘못된거 같은데요. 제가 잘못 이해하고 있다면 다시 설명 부탁드립니다.

답변 1

0

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

2024. 05. 30. 22:27

아 네, 초급자 님 정확하게 맞습니다!

제가 설명하면서, self.view라고 붙였어야 하고,
해당 부분에서 에러가 나는 이유를 잘 못설명하고 있어요!

emailTextFieldView속성 내부에서

self.view.addSubview(view)

이렇게 사용하셔야 하고,
lazy var는, 어쨌든 self즉, 뷰컨트롤러가 초기화가 되어야지, self.view에 접근할 수 있습니다.

따라서 뷰(emailTextFieldView) 자체가 뷰컨트롤러(self)의 저장속성에 속해 있기 때문에
뷰(emailTextFieldView)가 초기화 시점(동일 시점 - 뷰컨트롤러가 생성되면서.. 거기에 속한 저장속성도 같이 생성되니)에
lazy var를 붙여야 하는 건 맞는데, 이유는 조금 잘못 설명하고 있긴합니다.
(강의를 찍으면서 중간 중간에 더 설명드리고 싶은 부분이 있어.. 급하게 말씀드리다 보니,
코드 라던지.. 조금씩 잘못된 부분들이 간혹 있습니다.)

다만, 이미 그런 내용들에 대해서 자주하는 질문을 통해서 다시 설명드리고 있으니..
꼭 자주하는 질문을 참고 부탁드립니다 🙏🏻

링크: https://bit.ly/3MR3Mr6



감사합니다. :)