您的位置:首页 > 移动开发

iOS AppDelegate浅析

2015-10-20 22:06 417 查看
     当我们创建一个iOS项目,默认会有main.m类,这是一个程序的主入口。main.m方法体如下:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * 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就是整个项目的一个监听器,让我们实时了解当前程序的运行情况。

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: