AppDelegate解析
当我们创建一个iOS项目,默认会有main.m类,这是一个程序的主入口。main.m方法体如下:
- #import <UIKit/UIKit.h>
- #import "AppDelegate.h"
- int main(int argc, charchar * argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
- }
在上述方法体中,UIApplicationMain()方法根据我们提供的AppDelegate类名来创建UIApplication的一个实例,且将这个AppDelegate作为UIApplication的委托,一般我们可以通过类方法[UIApplication shareApplication]来获取对UIApplication的一个引用。
在UIApplication接收到系统事件和生命周期事件时,会把相应的事件消息传递给UIApplicationDelegate进行处理,下面的声明周期函数都是可选的,一般都可以实现他们:
(1)
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
程序启动后执行的回调。
(2)
- - (void)applicationWillResignActive:(UIApplication *)application
应用程序将要由活动状态切换到非活动状态时执行的委托调用,如按下home 按钮,返回主屏幕,或全屏之间切换应用程序等。
(3)
- - (void)applicationDidEnterBackground:(UIApplication *)application
//在应用程序已进入后台程序时,要执行的委托调用。所以要设置后台继续运行,则在这个函数里面设置即可
(4)
- - (void)applicationWillEnterForeground:(UIApplication *)application
//在应用程序将要进入前台时(被激活),要执行的委托调用,与applicationWillResignActive 方法相对应。
(5)
- - (void)applicationDidBecomeActive:(UIApplication *)application
//在应用程序已被激活后,要执行的委托调用,刚好与 applicationDidEnterBackground 方法相对应。
(6)
- - (void)applicationWillTerminate:(UIApplication *)application
//在应用程序要完全退出的时候,要执行的委托调用。
(7)
- - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止。
(8)
- - (void)applicationSignificantTimeChange:(UIApplication *)application
当系统时间发生改变时执行。
(9)
- -(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
当StatusBar状态栏大小发生改变时执行。
(10)
- -(void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration
当Statusbar状态栏方向发生改变时执行。
(11)
- - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
当通过url时执行;
(12)
- - (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
当Statusbar大小发生改变时执行;
(13)
- -(void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
当Statusbar方向发生改变后执行。
......
所以现在我们可以知道,AppDelegate就是整个项目的一个监听器,让我们实时了解当前程序的运行情况。