概要
- 进入main函数
- 执行
UIApplicationMain
函数- 创建UIApplication对象
- 创建UIApplicationDelegate对象并复制
- 读取配置文件中的info.plist,设置程序启动的一些属性
- 创建应用程序的
main runloop
循环
- UIapplicationDelegate对象开始处理监听到的事件
- 程序启动成功后首先调用
application:didFinishLaunchingWithOtions:
方法
如果info.plist文件中配置了启动storyboard文件名,则加载storyboard文件。如果没有配置,则根据代码来创建UIWindow-rootViewController。
- 程序启动成功后首先调用
UIApplication
UIApplication代表一个应用程序,每个应用程序都有一个UIApplication全局对象,通过[UIApplication sharedApplication]
获得这个对象,进行一些应用级的操作。UIApplication是一个应用程序的开始,它维护了一个在本应用中打开的window列表,负责初始化显示UIWindow,负责加载应用程序的第一个UIView到UIWindow中。UIApplication还被赋予一个代理对象,在实际编程中,我们一般是和代理对象UIApplicationDelegate
打交道,UIApplication负责监听接收事件,而由UIApplicationDelegate决定应用程序如何去响应这些事件。
UIApplicationDelegate
所有的移动操作都有一个特点:很容易收到打扰,如来电、锁屏等,会导致app进入后台或者被终止。app在受到干扰时会产生一些事件,UIApplication会监听这些事件,UIApplicationDelegate负责处理这些事件。主要包括如下事件:
- 程序加载完毕
application:didFinishLauchingWithOpetions:
- 程序将失去焦点
applicationWillResignActive:
- 程序进入后台
applicationDidEnterBackground:
- 程序将要回到前台
applicationWillEnterForeground:
- 程序重新获取焦点
applicationDidBecomeActive:
- 程序即将退出
applicationWillTerminate:
备注:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //全屏window
self.window.backgroundColor = [UIColor whiteColor]; //白色背景
[self.window makeKeyAndVisible]; //
return YES;
}
UIViewController的生命周期
- alloc
- init
- loadView
- ViewDidLoad 载入完成可以进行自定义数据以及动态创建控件
- ViewWillAppear
- ViewDidAppear
- ViewWillDisappear
- ViewDidDisappear
- dealloc
注意:发生内存警告的时候,如果本视图不是当前屏幕正在显示的视图,viewDidUnload
将会被执行。本视图的所有子视图将会被销毁,以释放内存。