-
iOS ViewController 생명주기🧑💻/Swift 2021. 7. 12. 22:27반응형
iOS는 Navigation Controller를 사용해 화면을 전환할 때 LIFO(Last In First Out) 방식으로 관리합니다.
스택 구조와 동일하므로 마지막으로 push 된 화면을 표시하고 제거(pop)합니다.
화면이 표시되기 전부터 제거된 후까지의 생명주기를 알아보겠습니다.1. init
ViewController 객체가 생성됩니다.
2. loadView
View를 메모리에 로드합니다.
3. viewDidLoad
View의 Controller가 메모리에 로드된 뒤 호출됩니다.
보통 화면이 표시되기 전 초기화하는 작업을 추가합니다.awakeFromNib
nib 파일이란 Xcode가 xib와 storyboard를 컴파일한 바이너리 파일입니다.
런타임 시 View를 생성하기 위해 nib 파일을 메모리에 로드하고 초기화합니다.
awakeFromNib는 nib 파일이 로드된 뒤 서비스할 준비가 되어있는 상태에 호출됩니다.
따라서 다음과 같은 순서로 진행됩니다.
ViewController awakeFromNib
ViewController loadView
ViewController viewDidLoad4. 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 viewDidAppear6. viewDidUnload
View가 메모리에서 해제된 뒤 호출됩니다.
참고
반응형