标签:
所有的移动操作系统都有个致命的缺点:app很容易受到打扰,比如一个来电或者锁屏都会导致app进入后台甚至被终止
还有很多其他类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这是UIApplication会通知他的delegate对象 让delegate对象来处理这些系统事件
常用的代理方法
@implementation AppDelegate /** * 程序启动完毕就会调用 */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; } /** * 程序将要失去焦点的时候调用 */ - (void)applicationWillResignActive:(UIApplication *)application { } /** * 程序进入后台的时候就会调用 一般在这里保存应用数据 */ - (void)applicationDidEnterBackground:(UIApplication *)application { } /** * 程序进入前台就会调用 */ - (void)applicationWillEnterForeground:(UIApplication *)application { } /** * 程序接收到内存警告时调用 一般在这里清楚不需要再使用的内存 */ - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { } /** * 被激活 获取到焦点的时候调用 */ - (void)applicationDidBecomeActive:(UIApplication *)application { } @end
delegate:可以处理的系统事件包括:
应用程序一启动首先创建的第一个对象就是UIApplication
UIApplication是应用程序的象征 当我们创建一个项目时:系统已经帮我自动创建了代理 :AppDelegate
应用程序的启动过程:
程序启动的完整过程
1.main函数
2.UIApplicationMain
* 创建UIApplication对象
* 创建UIApplication的delegate对象
3.delegate对象开始处理(监听)系统事件(没有storyboard)
* 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中创建UIWindow
* 创建和设置UIWindow的rootViewController
* 显示窗口
3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)
* 创建UIWindow
* 创建和设置UIWindow的rootViewController
* 显示窗口
标签:
原文地址:http://www.cnblogs.com/syios/p/4774914.html