Danny의 iOS 컨닝페이퍼
article thumbnail
Published 2023. 3. 31. 00:23
[iOS/Swift] Life Cycle의 loadView UIKit/Swift

시작

간단히 할 예정이라

먼저 초스피드로 뷰 컨트롤러의 Life Cycle을 알아봅시다.

 

 

뷰컨의 Life Cycle의 순서

loadView

뷰를 생성합니다.

(시스템에서 자동 호출)

viewDidLoad

뷰가 로드되고 작업을 수행

(앱이 실행되고 오직 한 번만 작업을 수행)

viewWillAppear

뷰가 화면에 나타나기 직전 준비 작업을 수행

(뷰컨으로 다시 되돌아올 때마다 작업을 다시 수행)

뷰가 화면에 나타남

viewDidAppear

뷰가 화면에 나타난 후 작업을 추가적으로 수행

viewWillDisappear

뷰가 화면에서 사라지기 전에 마무리 작업을 수행

(메모리는 아직 존재)

뷰가 화면에서 사라짐

viewDidDisappear

뷰가 화면에서 완전히 사라진 후 작업을 수행

deinit 호출 (메모리 해제)

 

 

아무튼 이 글은 loadView 대한 것이므로

바로 loadView를 알아봅시다.

 

 

loadView

기본적으로 loadView는 뷰 컨트롤러가 생성될 때 자동으로 호출이 됩니다.

 

여기서 view에다가 직접 커스텀 뷰도 할당할 수 있죠.

(이와 같이 직접 커스텀 뷰로 바꾸지 않는 한, 직접 loadView를 오버라이드 하면 안 된다고 하네요.)

 

 

이건 대략적인 loadView의 생성 과정입니다.

 

nib file에 접근하여 nil 여부를 확인합니다.

만약 nib file이 존재한다면(nil이 아니라면) nib file의 View를 로드하고,

nil이라면 새로운 UIView를 생성합니다.

loadView에서 최종적으로 생성된 UIView를

ViewController의 프로퍼티의 view로 할당이 됩니다.

(최종적으로 view에 할당된의 객체가 뷰컨에 적용 된다는 말 같이 보이네요.)

 

 

주의사항

만약 loadView가 nil을 반한하게 되면 런타임 오류가 발생합니다.

 

 

저는 스토리보드 대신 코드로 자주 사용하니

코드로 커스텀 뷰를 loadView에서 적용해 봅시다.

 

그냥 오버라이드한 loadView에서 view에다가 만들어준 커스텀 뷰의 객체를 넣어주면 됩니다.

세상 쉽죠?!

override func loadView() {
    self.view = CustomView()
}

 

주의점으로는

super.loadView() 호출하면 안 된다고 하네요!

 

아마도 처음에 super를 호출하면 메모리 낭비고

마지막에 super를 호출하면 새로운 UIView가 생성되어 view에 할당되기 때문인 것 같습니다.

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!