loadView vs viewDidLoad

apwierk·2022년 8월 2일
0

loadView vs viewDidLoad

우선 ViewController의 기본 Life Cycle 을 알아봤다.

위 사진과 같은 단계로 이루어진다.
view가 생성되고 사라지는 과정 중 ViewController에서 실행되는 메서드의 단계이다.

viewDidLoad: 뷰가 로드 되었다.

뷰를 처음 나타낼 때 단 한번만 실행한다. 다시 이 뷰를 나타내도 실행되지 않는다.

viewWillAppear: 뷰가 나타날 것이다.

뷰를 나타낼 때마다 실행된다. 말과 같이 뷰가 나타나기 전에 실행되는 메서드이다.

viewDidAppear: 뷰가 나타났다.

뷰가 나타나고 실행되는 메서드이다. 뷰가 나타났다고 컨트롤러에게 알리는 역할을 한다. 또한 화면에 적용될 애니메이션을 그려준다. 이외에는 viewWillAppear와 거의 같다.

viewWillDisappear: 뷰가 사라질 것이다.

뷰가 사라지기 직전에 호출되는 메서드이다. 뷰가 삭제될 것이다라는 것을 뷰 컨트롤러에게 알려준다.

viewDidDisappear: 뷰가 사라졌다.

뷰 컨트롤러에게 뷰가 제거되었음을 알려준다.

그 중에서도 viewDidLoadloadView를 비교해보자.

loadView

ViewController에 View를 만드는 역할을 하는 메소드이다.
애플 공식문서 설명에 따르면 loadView()는 직접 호출하면 안되고, ViewController가 View를 요청받은 상황에서 View가 정의되어 있지 않다면 실행이 된다.
viewDidLoad()보다 먼저 실행된다.

loadView()로 직접 view를 정의 할 때는 super.loadView()를 호출 하면 안되고, self.view = SomeView()처럼 명시적으로 초기화를 해줘야한다.

override func loadView() {
    self.view = .init() // UIView() 초기화
    print("loadView()")
}

단, 스토리보드를 사용할 경우 loadView()는 사용할 필요가 없다. loadView()UIView객체를 생성하고 인스턴스화 한다.

viewDidLoad

viewDidLoad() Xcode에서 ViewController를 새로 만들면 자동으로 생성되고, 여러가지 초기화 작업을 이 메소드 안에서 한다.

애플 공식문서 설명에 따르면 viewDidLoad()는 View가 메모리에 로드가 완료된 후 실행 되고,
View가 nib file에서 로드게 되었는지, 또는 loadView() 메서드에서 생성되었는지와 상관 없이 호출이 된다. 일반적으로 viewDidLoad()에서는 nib 파일에서 로드된 뷰에 대한 추가 초기화를 수행합한다.

결론

loadView()viewDidLoad()보다 먼저 실행된다.
loadView()는 뷰가 로드될 때 실행되고, viewDidLoad()는 로드가 완료된 후에 실행된다.

스토리보드를 사용하지 않는 경우, 따로 커스텀 뷰를 생성하여 뷰 컨트롤과 연결하여 사용할 경우 loadView()에서 생성하여 사용한다.
뷰가 로드가 된 이후에 초기화할 것들은 viewDidLoad()에서 작업해주면 된다.

loadView
viewDidLoad
참고 블로그

profile
iOS 꿈나무 개발자

0개의 댓글