目录
前言
本篇博客主要是关于UIViewController的生命周期。在iOS开发中UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般复杂的项目都离不开UIViewController作为基类。所以了解UIViewController的整个生命周期是有必要的。
UIViewController
在 Objective-C 中,UIViewController
的生命周期由一系列的方法调用组成,这些方法可以在视图控制器的各个阶段被调用。了解这些生命周期方法对于管理视图控制器的状态、执行必要的设置以及清理资源非常重要。
以下是 UIViewController
的主要生命周期方法及其用途:
1. viewDidLoad
当视图控制器的视图首次加载时调用。这是初始化视图和配置子视图的好地方。
- (void)viewDidLoad {
[super viewDidLoad];
// 初始化代码,比如加载子视图等
}
2. viewWillAppear:
在视图即将出现时调用,并且会传入一个动画参数。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// 配置界面,比如更新导航栏按钮
}
3. viewDidAppear:
在视图已经出现后调用,也会传入一个动画参数。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// 执行一些在视图完全出现后的操作
}
4. viewWillDisappear:
在视图即将消失时调用,也会传入一个动画参数。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// 准备释放资源或保存状态
}
5. viewDidDisappear:
在视图已经消失后调用,也会传入一个动画参数。
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
// 清理操作,比如移除通知监听
}
6. loadView
在视图控制器首次触发加载视图时调用。如果你要自定义视图的创建过程,可以重写此方法。
- (void)loadView {
// 创建自定义视图
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
}
7. viewWillLayoutSubviews
和 viewDidLayoutSubviews
当视图的布局将要进行或已经完成时调用。这些方法在视图的尺寸发生变化时非常有用。
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
// 布局将要发生
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
// 布局已完成
}
8. viewWillTransition:toSize:withTransitionCoordinator:
在视图控制器的视图大小将要改变时调用,比如设备旋转。
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
// 处理视图大小变化
}
9. dealloc
当视图控制器被销毁时调用。这是一个清理资源的好地方,比如取消网络请求、移除定时器等。
- (void)dealloc {
// 清理代码
}
总结
理解并正确实现这些生命周期方法是开发 iOS 应用的关键部分。使用这些方法可以管理内存、更新 UI、响应设备方向变化等。