[iOS] ViewController의 생명주기 (Life-Cycle)
iOS 앱에서 보이는 화면은 ViewController로 이루어져있다고해도 과언이 아니네요.
그런 중요한 녀셕인만큼 잘 알고 쓰고싶은 마음입니다
시작해봅니다 ~
우리는 프로젝트를 생성하게 되면 가장 먼저 만나는 화면이자, 코드입니다
궁금하니까 Jump to Definition을 통해 봤습니다.
loadView 이후에 불려진다 ?
일단 전체적인 Life-Cycle를 알아보자 !
위 문서에 나온 순서에 맞춰 각 메소드를 알아보겠습니다
viewDidLoad()
이 메소드는 view controller가 메모리에 불려졌을 때 호출이 되며 view가 nib 파일에서 호출되었는지, 프로그래밍적으로 loadView() 메소드에서 만들어졌는지 여부에 관계없이 호출되어진다고합니다.
viewWillAppear(_:)
view controller 의 view를 view 계층에 추가하기 전에 애니메이션을 구성하기 전에 호출된다고한다.
뷰의 방향 혹은 표시줄의 방향 또는 스타일을 변경할 수 있다고한다.
override 할 경우에 구현 할 시점에 super를 호출해야한다.
viewDidAppear(_:)
뷰 계층에 뷰가 추가되었음을 view controller에게 알려준다
뷰가 생성되는 것을 확인해봤으니 이제는 사라지는 것도 알아봅시다 !!
viewWillDisappear(_:)
이 메소드는 view가 실제로 제거되기 전에 호출되어진다.
viewDidDisappear(_:)
뷰 계층에서 완전히 지워졌을 때 view controller에게 알려주는 메소드이다.
아래 예제를 통해서 각 라이프 사이클이 언제 호출되는지 알아보자 !
각 메소드 간 관계
실제 앱에서 어떻게 작동하는지 보기 위해 준비를 했습니다.
import UIKit
class SecondViewController: UIViewController {
override func loadView() {
super.loadView()
print("loadView")
}
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad")
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("viewDidDisappear")
}
}