这个好像是个面试题吧
顺序是这样的:viewDidLoad(控制器的View加载完)—》viewWillAppera(控制器的View即将显示)—》viewVillLayoutSubViews(控制器的View将要摆放子控件)—》viewDidLayoutSubViews(控制器的View摆放子控件完成)—》viewDidApper(控制器的View显示完成)—》viewWillDisappear(控制器的View即将消失)—》viewDidDisapper(控制器的View已经消失)
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
// 控制器的View加载完时候调用(我们一般在这添加子控件)
- (void)viewDidLoad {
[super viewDidLoad];
}
//控制器的View将要显示时候调用
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
// 将要布局控制器的View里面的子控件的时候调用
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
}
//布局控制器的View里面的子控件完成的时候调用
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
}
//控制器的View显示完成时候调用
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
//控制器的View将要消失时候调用
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
//控制器的View完全消失时候调用
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
@end
注意上面是ARC模式 MRC模式下还有几个方法哦
//在 ARC当中. 当前控制器的View即将被销毁的时候会调
-(void)viewWillUnload
{
[super viewWillUnload];
}
//当前控制器的View被销毁的时候会调
-(void)viewDidUnload
{
[super viewDidUnload];
}
其实也是按照ARC模式的,只是后面多了几步—>接到内存警告—>viewWillUnload—>释放View—>viewDidUnload
应用程序的启动原理
1:首先去到main文件加载main函数 执行UIApplicationMain函数 创建UIApplication对象,并设置代理
2:开启一个主运行循环(防止程序中途打断退出)
3:加载info.plist(判断这个字典中是否有Main storyboard file base name:main)在这个键值对,如果存在,那么就去加载Main.storyboard文件,加载箭头所转指的控制器
4.在加载控制器时候会先创建窗口,并把控制器的View放到窗口上面