🧑‍💻/Swift

iOS ViewController 생명주기

유리맥 2021. 7. 12. 22:27
반응형

iOS는 Navigation Controller를 사용해 화면을 전환할 때 LIFO(Last In First Out) 방식으로 관리합니다.
스택 구조와 동일하므로 마지막으로 push 된 화면을 표시하고 제거(pop)합니다.
화면이 표시되기 전부터 제거된 후까지의 생명주기를 알아보겠습니다.

ViewController Lifcycle

1. init

ViewController 객체가 생성됩니다.

 

2. loadView

View를 메모리에 로드합니다.

 

3. viewDidLoad

View의 Controller가 메모리에 로드된 뒤 호출됩니다.
보통 화면이 표시되기 전 초기화하는 작업을 추가합니다.

awakeFromNib

nib 파일이란 Xcode가 xib와 storyboard를 컴파일한 바이너리 파일입니다.
런타임 시 View를 생성하기 위해 nib 파일을 메모리에 로드하고 초기화합니다.
awakeFromNib는 nib 파일이 로드된 뒤 서비스할 준비가 되어있는 상태에 호출됩니다.

따라서 다음과 같은 순서로 진행됩니다.
ViewController awakeFromNib
ViewController loadView
ViewController viewDidLoad

 

4. viewWillAppear / viewDidAppear

viewWillAppear : View가 표시되기 직전에 호출됩니다.
View1 > View2 > View1 형태로 View가 전환된다면
viewDidLoad는 1회만 호출되지만, viewWillAppear은 View1이 2번 나타나므로 2회 호출됩니다.

viewDidAppear : View가 표시된 후 호출됩니다.

View에 적용할 애니메이션 작업을 추가하는 것이 좋습니다.

 

5. viewWillDisappear / viewDidDisappear

View가 사라지기 직전/직후 호출됩니다.
View1 > View2 > View1 형태로 View가 전환된다면 다음 순서로 진행됩니다.
View2가 표시할 준비가 되면 이후 View1이 사라집니다.

View1 viewWillDisappear
View2 viewDidLoad
View2 viewWillAppear
View1 viewDidDisappear
View2 viewDidAppear

 

6. viewDidUnload

View가 메모리에서 해제된 뒤 호출됩니다.


참고

반응형