- 1. 实例化阶段:init(coder:) 或 init(nibName:bundle:) 被调用
- 2. 加载视图阶段:loadView → viewDidLoad
- 3. 视图即将显示:viewWillAppear → viewWillLayoutSubviews
- 4. 视图完成布局:viewDidLayoutSubviews → viewDidAppear
- 5. 视图显示期间:viewWillLayoutSubviews/viewDidLayoutSubviews(根据需要多次调用)
- 6. 视图即将消失:viewWillDisappear
- 7. 视图已经消失:viewDidDisappear
- 8. 内存警告:didReceiveMemoryWarning(可能在任何时候发生)
- 9. 销毁阶段:deinit
class LifecycleViewController: UIViewController {
// 1. 初始化
override init(nibName: String?, bundle: Bundle?) {
super.init(nibName: nibName, bundle: bundle)
print("1. 初始化完成")
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
// 2. 加载视图
override func loadView() {
super.loadView()
print("2. loadView 被调用")
}
// 3. 视图加载完成
override func viewDidLoad() {
super.viewDidLoad()
print("3. viewDidLoad 被调用")
}
// 4-5. 视图显示过程
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("4. viewWillAppear 被调用")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("5. viewWillLayoutSubviews 被调用")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("6. viewDidLayoutSubviews 被调用")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("7. viewDidAppear 被调用")
}
// 6-7. 视图消失过程
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("8. viewWillDisappear 被调用")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("9. viewDidDisappear 被调用")
}
// 8. 内存警告
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
print("收到内存警告")
}
// 9. 析构
deinit {
print("10. 视图控制器被销毁")
}
}