AppDelegate解析

     当我们创建一个iOS项目,默认会有main.m类,这是一个程序的主入口。main.m方法体如下:

  1. #import <UIKit/UIKit.h>  
  2. #import "AppDelegate.h"  
  3.   
  4. int main(int argc, charchar * argv[]) {  
  5.   @autoreleasepool {  
  6.       return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));  
  7.   }  
  8. }  


在上述方法体中,UIApplicationMain()方法根据我们提供的AppDelegate类名来创建UIApplication的一个实例,且将这个AppDelegate作为UIApplication的委托,一般我们可以通过类方法[UIApplication shareApplication]来获取对UIApplication的一个引用。

      在UIApplication接收到系统事件和生命周期事件时,会把相应的事件消息传递给UIApplicationDelegate进行处理,下面的声明周期函数都是可选的,一般都可以实现他们:

(1)

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  

程序启动后执行的回调。

(2)

  1. - (void)applicationWillResignActive:(UIApplication *)application  


应用程序将要由活动状态切换到非活动状态时执行的委托调用,如按下home 按钮,返回主屏幕,或全屏之间切换应用程序等。 

(3)

  1. - (void)applicationDidEnterBackground:(UIApplication *)application  

//在应用程序已进入后台程序时,要执行的委托调用。所以要设置后台继续运行,则在这个函数里面设置即可

(4)

  1. - (void)applicationWillEnterForeground:(UIApplication *)application  


//在应用程序将要进入前台时(被激活),要执行的委托调用,与applicationWillResignActive 方法相对应。

(5)

  1. - (void)applicationDidBecomeActive:(UIApplication *)application   


//在应用程序已被激活后,要执行的委托调用,刚好与  applicationDidEnterBackground 方法相对应。

(6)

  1. - (void)applicationWillTerminate:(UIApplication *)application  


//在应用程序要完全退出的时候,要执行的委托调用。

(7)

  1. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application  


iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止。

(8)

  1. - (void)applicationSignificantTimeChange:(UIApplication *)application  


当系统时间发生改变时执行。

(9)

  1. -(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame  


当StatusBar状态栏大小发生改变时执行。

(10)

  1. -(void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration  


当Statusbar状态栏方向发生改变时执行。

(11)

  1. - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url  


当通过url时执行;

(12)

  1. - (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame  


当Statusbar大小发生改变时执行;

(13)

  1. -(void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation  


当Statusbar方向发生改变后执行。

......

     所以现在我们可以知道,AppDelegate就是整个项目的一个监听器,让我们实时了解当前程序的运行情况。

原文地址:https://www.cnblogs.com/guangleijia/p/4923743.html