본문 바로가기
iOS/궁금증

[UIKit]loadView에 view는 언제 할당될까?

by MINT09 2024. 1. 27.

코드베이스로 짠 코드에서 실험해 본 내용이다. 예상으로는, super.loadView()가 실행되기 전까지는 view가 nil이기 때문에 값이 없을 것이라고 생각했다. 때문에 LLDB로 view를 loadView() 함수 내부에서 찍어보았다. 

그런데 예상과는 다른 일이 있었다. super.loadView()가 불리기 전에 po view로 찍어보니, loadView와 loadView끝이 찍히더니, 값이 뜨는 것이다! 참고로 옆에 UIViewController의 view는 (id) 0x0으로 할당되어 있지 않았다. 오류인가? 왜 view가 찍히지?

그래서 loadView()를 여러번 찍어보고 하나씩 내려가면서 po view를 찍어보니, 매번 새로운 view가 출력되었다. 

If you access this property when its value is nil, the view controller automatically calls the loadView() method and returns the resulting view.

공식문서 내용을 보면, view property에 접근할 때 nil이라면 loadView를 호출해 View를 채워준다고 한다. 때문에 사실상 이미 view가 nil이었기에 31번째 줄의 loadView()가 호출된 것이다. 이어서 po view로 접근할 때도 view가 nil값이기 때문에 매번 loadView를 호출하게 되고, 그러면서 view에 새로운 값들을 할당하게 된다. 부를때마다 새로운 view들이 뜨게 되는 것이다. nil 값이라 loadView를 호출해서!

view가 없으면 앱이 터지니까 그런 것 같은데, 참 안전한 언어라는 생각이 다시 들었다.