해당 글에서는 UIViewController 내의 라이프사이클에 대해서 이해를 돕기 위해 작성한 글입니다.
1) UIViewController 라이프사이클(Lifecycle)
💡 UIViewController 라이프사이클(Lifecycle)이란?
- UIViewController는 iOS 앱에서 화면을 구성하는 핵심적인 역할을 담당합니다. - 이러한 UIViewController가 생성되고 화면에서 제거될 때, 일련의 라이프사이클 메서드가 호출됩니다.
2) 라이프사이클 과정
💡 클래스에서는 UIViewController로 부터 상속을 받아서 라이프 사이클 메서드의 사용이 가능합니다.
// 콜론(:)으로 UIViewController로 부터 상속을 받습니다.
class MyViewController: UIViewController {
// MyViewController 클래스의 내용
}
1. 요약
라이프 사이클 메서드
설명
loadView()
UIViewController의 view를 생성하고 초기화하는 메서드입니다. 이 메서드는 UIViewController가 생성될 때 단 한 번만 호출됩니다.
viewDidLoad()
해당 뷰의 로드가 완료된 후 호출됩니다. 해당 뷰에 대한 초기화 및 설정 작업을 수행합니다.
viewWillAppear()
해당 뷰가 화면에 나타나기 직전에 호출됩니다. 해당 뷰가 보여지기 전에 필요한 작업들을 수행합니다.
viewDidAppear()
해당 뷰가 화면에 나타난 후에 호출됩니다. 해당 뷰가 나타난 후에 필요한 작업들을 수행합니다.
viewWillDisappear()
해당 뷰가 화면에서 사라지기 직전에 호출됩니다. 해당 뷰가 사라지기 전에 필요한 작업들을 수행합니다.
viewDidDisappear()
해당 뷰가 화면에서 사라진 후에 호출됩니다. 해당 뷰가 사라진 후에 필요한 작업들을 수행합니다.
didReceiveMemoryWarning()
메모리 부족 상황에서 호출되는 메서드입니다. 해당 UIViewController를 해제하고자 할 때 호출됩니다. 메모리 관리를 위한 작업들을 수행합니다.
2. 메서드 상세 설명
💡 메서드의 접두사에 따라서 구분이 됩니다.
prefix
설명
did -
완료된 후에 수행이 됩니다
will -
완료되기 전에 수행이 됩니다.
2.1. loadView()
💡 UIViewController의 view를 생성하고 초기화하는 메서드입니다.
💡 이 메서드는 UIViewController가 생성될 때 단 한 번만 호출됩니다.
class MyViewController: UIViewController {
override func loadView() {
super.loadView()
// view 생성 및 설정 작업 수행
}
}
2.2. viewDidLoad()
💡 UIViewController가 처음 생성된 후, 해당 뷰의 로드가 완료된 후 호출됩니다.
💡이 메서드에서는 해당 뷰에 대한 초기화 및 설정 작업을 수행합니다.
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 뷰의 초기화 및 설정 작업 수행
}
}
2.3. viewWillAppear()
💡 UIViewController의 뷰가 화면에 나타나기 직전에 호출됩니다.
💡 이 메서드에서는 해당 뷰가 보여지기 전에 필요한 작업들을 수행합니다.
class MyViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 뷰가 나타나기 전에 필요한 작업 수행
}
}
2.4. viewDidAppear()
💡 UIViewController의 뷰가 화면에 나타난 후에 호출됩니다.
💡 이 메서드에서는 해당 뷰가 나타난 후에 필요한 작업들을 수행합니다.
class MyViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 뷰가 나타난 후에 필요한 작업 수행
}
}
2.5. viewWillDisappear()
💡 UIViewController의 뷰가 화면에서 사라지기 직전에 호출됩니다. 💡 이 메서드에서는 해당 뷰가 사라지기 전에 필요한 작업들을 수행합니다.
class MyViewController: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// 뷰가 사라지기 전에 필요한 작업 수행
}
}
2.6. viewDidDisappear()
💡 UIViewController의 뷰가 화면에서 사라진 후에 호출됩니다. 💡 이 메서드에서는 해당 뷰가 사라진 후에 필요한 작업들을 수행합니다.
class MyViewController: UIViewController {
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// 뷰가 사라진 후에 필요한 작업 수행
}
}
2.7. didReceiveMemoryWarning()
💡 메모리 부족 상황에서 호출되는 메서드입니다.
💡 메모리 부족으로 인해 시스템에서 해당 UIViewController를 해제하고자 할 때 호출됩니다. 💡 이 메서드에서는 메모리 관리를 위한 작업들을 수행합니다.
class MyViewController: UIViewController {
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// 메모리 부족 시 수행할 작업 수행
}
}