控制器View的生命周期
这个好像是个面试题吧
Snip20170106_4.png
顺序是这样的: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放到窗口上面