赞
踩
每个iOS程序都会有一个AppDelegate的类,这个类就是一个代理类,我们新建一个Project的时候,里面都会带有这个类。现在就让我们看看这个类。
对于AppDelegate,它的父类是UIResponder,然后实现了UIApplicationDelegate协议,这里的方法多是协议里面的方法,先看看默认的都有哪些方法。
它带参是这样的:
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- // Override point for customization after application launch.
- return YES;
- }
先看一下它的注释:在应用程序启动后,重写自定义点。这个是最直接的解释,一般在这里面,我做的操作如下:
| 参数 | 描述 |
| ------------- | ---------------------------------------- |
| application | 你的app对象 |
| launchOptions | 一个指示app启动原因的字典(如果有)。这个字典也可能是空的在用户直接点击图标启动的情况下。例如当程序关闭,并且有推送消息过来的时候,通过点击推送打开app这个字典就包含推送过来的消息内容 |
application: willFinishLaunchingWithOptions:
)用于完成app的初始化和一些微调。这个方法在状态复位的时候调用,但是发生在app的window和其他UI展现之前。在某些情况下,当这个方法返回值之后,系统会调用其他的代理方法。(当用户进入前台状态或者后台状态的情况)。如果你没有在application: willFinishLaunchingWithOptions:
中处理launchOptions里面的key值,那么这个方法是你最后能够处理的地方。也就是说,你应该在这里对launchOptions里面的值提供合适的响应。
- (void)applicationDidFinishLaunching:(UIApplication *)application;
当程序初始化的时候,强烈建议去使用:
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- return YES;
- }
or
- - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- return YES;
- }
那个applicationDidFinishLaunching:
方法是个老版本iOS上使用的。
它带参是这样的:
- - (void)applicationWillResignActive:(UIApplication *)application {
- }
告诉代理,app将要成为不活跃状态。
如果app使用了没有保存的用户数据,你应该在这个方法里面保存它确保它不丢失。然而,苹果还是强烈建议在合适的时间去保存你的数据。千万不要依赖特定的app状态来保存用户的data。
它带参数是这样:
- - (void)applicationDidEnterBackground:(UIApplication *)application {
- }
告诉代理,app当前已经处于background(后台)。
它带参数是这样的:
- - (void)applicationWillEnterForeground:(UIApplication *)application {
- }
告诉代理,app将要进入前台。
它带参数是这样的:
- - (void)applicationDidBecomeActive:(UIApplication *)application {
- }
告诉代理,app已经成为active状态。
applicationWillResignAction:
方法,当挂断电话之后,程序会调用此方法。同样也有一个UIAppicationDidBecomeActiveNotification通知。
它带参数是这样的:
- - (void)applicationWillTerminate:(UIApplication *)application {
- }
告诉代理方法,app将要终止。
这里没有列出所有的方法,只是最常用的几个方法。
1 当我们第一次打开程序的时候,执行结果如下:
- 2016-11-08 17:56:57.670768 CategoriesDemo[3722:737434] application:didFinishLaunchingWithOptions:
- 2016-11-08 17:56:57.675868 CategoriesDemo[3722:737434] applicationDidBecomeActive:
2 当程序进入后台的时候,执行结果如下:
- 2016-11-08 17:59:46.082466 CategoriesDemo[3722:737434] applicationWillResignActive:
- 2016-11-08 17:59:46.607901 CategoriesDemo[3722:737434] applicationDidEnterBackground:
3 当程序进入前台的时候,执行结果如下:
- 2016-11-08 18:00:27.726073 CategoriesDemo[3722:737434] applicationWillEnterForeground:
- 2016-11-08 18:00:28.143117 CategoriesDemo[3722:737434] applicationDidBecomeActive:
4 当有电话进来的时候(程序在前台的时候),执行结果如下:
2016-11-08 18:03:29.891976 CategoriesDemo[658:224868] applicationWillResignActive:
5 当挂掉电话的时候,执行结果如下:
2016-11-08 18:03:35.344466 CategoriesDemo[658:224868] applicationDidBecomeActive:
这里插一句:也就是当程序在前台的时候,来电话,会执行applicationWillResignActive:
方法。当电话挂掉时候,就会执行applicationDidBecomeActive:
方法。
1 应用程序运行状态有以下几种:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。