app的启动过程
1.执行main
2.执行UIApplicationMain
2.1会创建UIApplication对象,并设置它的代理
2.2会开启一个事件循环(主运行循环,死循环,保证程序不退出)
2.3加载info.plist。判断info.plist当中有没有指定的main。
{ 如果指定的话,加载Main.storyBaord。加载之前会创建一个UIWindow。每一个UIWindow都必须要有一个跟控制器,rootViewController。会把Main.storyBaord当中的控制器设置为UIWindow的rootViewController,设置的目的是强引用箭头指向的控制器,让它不释放。
把Main.storyBaord当中箭头指定的控制器的View添加到UIWindow,让UIWindow显示出来。
}
{
如果没有指定的话
1.创建窗口
2.设置窗口的跟控制器(每一个UIWindow都必须要有一个跟控制器,rootViewController)
3.显示窗口
3.1.设置当前窗口为应用的主窗口
[UIApplication sharedApplication].keyWindow = self.window;
3.2 显示窗口
self.window.hidden = NO;
把窗口的跟控制器添加到窗口上面
[self.window addSubview:self.window.rootViewController.view];
}
2.4通知应用程序代理,应用程序启动完毕。didFinishLaunchingWithOptions