//这里是用来加载view的,
//view的nib文件为nil时,手工创建视图界面时调用loadView;当view的nib文件存在的时候,初始化工作在viewDidLoad中实现。
//loadView时view还没有生成,viewDidLoad时,view已经生成了。loadView方法用来创建一个新的view。loadView只会被调用一次,而viewDidLoad可能会被调用多次。
//当受到内存警告时,那么此时系统默认操作会检查当前视图控制器的view是否还在使用,如果没在使用且控制器实现了loadView方法,ViewController会将view release并将其指向为nil。
//不要在loadView中调用父类方法[super loadView],因为这会影响CPU性能。
-(void)loadView{
}
//载入完成,可以进行自定义数据以及动态创建其他控件
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
//视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
-(void)viewWillAppear:(BOOL)animated{
}
// 视图已在屏幕上渲染完成
-(void)viewDidAppear:(BOOL)animated{
}
//为什么按下Home键之后没有调用viewWillDisappear和viewDidDisappear呢?
//因为在ios4后引入了后台的概念,当按下Home键之后,程序被挂起了,但是该View依然是原来的View,并不是新的。所以只有内存不够的时候或程序被终止的时候,才会调用viewWillDisappear和viewDidDisappear。
//视图将被从屏幕上移除之前执行
-(void)viewWillDisappear:(BOOL)animated{
}
//视图已经被从屏幕上移除,用户看不到这个视图了
-(void)viewDidDisappear:(BOOL)animated{
}
//视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放
//不要手动调用此方法,当引用计数值为0的时候,系统会自动调用此方法。
-(void)dealloc{
}
//-(void)viewDidUnload
//-(void)viewWillUnload IOS6 被废弃了
// viewDidLoad viewViewAppear viewDidAppear 启动程序
//viewWillDisappear viewDidDisappear 删除程序
//alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> dealloc
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//二、使用 NavigationController 去 Push 切换显示的View的时候,调用的顺序:
//例如 从 A 控制器 Push 显示 B 控制器,
//[(A *)self.navigationController pushViewController:B animated:YES]
//1. 加载B控制器的View(如果没有的话);
//2. 调用 A 的 - (void)viewWillDisappear:(BOOL)animated;
//3. 调用 B 的 - (void)viewWillAppear:(BOOL)animated;
//4. 调用 A 的 - (void)viewDidDisappear:(BOOL)animated;
//5. 调用 B 的 - (void)viewDidAppear:(BOOL)animated;
//总结来说,ViewController 的切换是先调用 隐藏的方法,再调用显示的方法;先调用Will,再调用Did。
//打印附录:
//[ViewController viewDidLoad]
//[ViewController viewWillAppear:]
//[ViewController viewWillLayoutSubviews]
//[ViewController viewDidLayoutSubviews]
//[ViewController viewDidAppear:]
//#Push一个新的ViewController : TestViewController
//[ViewController viewWillLayoutSubviews]
//[ViewController viewDidLayoutSubviews]
//[TestViewController viewDidLoad]
//[ViewController viewWillDisappear:]
//[TestViewController viewWillAppear:]
//[ViewController viewWillLayoutSubviews]
//[ViewController viewDidLayoutSubviews]
//[TestViewController viewWillLayoutSubviews]
//[TestViewController viewDidLayoutSubviews]
//[ViewController viewDidDisappear:]
//[TestViewController viewDidAppear:]
//[TestViewController viewWillLayoutSubviews]
//[TestViewController viewDidLayoutSubviews]
//#在新的ViewController 中返回
//[TestViewController viewWillDisappear:]
//[ViewController viewWillAppear:]
//[TestViewController viewDidDisappear:]
//[ViewController viewDidAppear:]
本文详细介绍了iOS应用中视图控制器的生命周期方法,包括视图的加载、显示、消失及销毁等关键阶段。通过实例展示了视图控制器切换时各生命周期方法的调用顺序。
658

被折叠的 条评论
为什么被折叠?



