iOS APP的AppDelegate理解

创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件。 AppDelegate为整个应用的一个代理,提供程序启动、退出等类似监控的接口。

1、AppDelegate.m 接口所在的文件,常见接口有:

/* 应用程序启动后,要执行的委托调用,系统启动代理(第一个页面的加载)*/  
(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
/* 应用程序将要由活动状态切换到非活动状态时执行的委托调用,如按下home 按钮,返回主屏幕,或全屏之间切换应用程序等。* / 
(void) applicationWillResignActive:(UIApplication*)application 
  
/* 在应用程序已进入后台程序时,要执行的委托调用。所以要设置后台继续运行,则在这个函数里面设置即可。*/  
(void) applicationDidEnterBackground:(UIApplication*)application    
   
/* 在应用程序将要进入前台时(被激活),要执行的委托调用,与applicationWillResignActive方法相对应。  */  
(void) applicationWillEnterForeground:(UIApplication*)application  
   
/* 在应用程序已被激活后,要执行的委托调用,刚好与  applicationDidEnterBackground 方法相对应。*/  
(void) applicationDidBecomeActive:(UIApplication*)application    
   
/* 在应用程序要完全退出的时候,要执行的委托调用。*/  
(void) applicationWillTerminate:(UIApplication*)application    

2、【全局变量】 AppDelegate可以在整个应用程序中调用,可以使用代码段获取AppDelegate的全局变量:

AppDelegate *appDelegate=[[UIApplication sharedApplication]delegate];//因此可以在AppDelegate.h中定义需要全局使用的变量。  

3、系统启动代理(第一个页面的加载:application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
一般在该代理接口中需要进行应用系统window(程序显示窗口)配置,完成页面弹出效果。(AppDelegate默认拥有UIWindow *window实例变量), 可以使用以下代码段完成:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//显示窗口配置    
 LoginViewController *login = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];//初始化应用系统需要显示的第一个页面(一般为ViewController)    
 self.window.rootViewController = login;//配置window窗口的rootViewController实例    
 //判定系统版本,选择页面加载方式    
 if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)  {    
     [self.window addSubview:login.view];    
 }  else  {    
     [self.window setRootViewController:login];    
 }    
 [self.window makeKeyAndVisible];    
 return YES; 
***补充:应用创建之后可以在Supporting Files分组中看到main.m类文件,是整个应用最开始的入口。 执行的代码段为:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
最后一个参数即为应用中的AppDelegate类的实例,执行这段程序即进入AppDelegate类中的applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法接口。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,681评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,159评论 1 32
  • iOS面试题目100道 1.线程和进程的区别。 进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,...
    有度YouDo阅读 30,018评论 8 137
  • 那夜我踏着严寒,在拥挤的人群中终于挤上回家的列车,车上大多都是百无聊赖的人们,透过窗外则是无尽倒退的黑夜,黑夜里仿...
    叶恨秋的猫阅读 135评论 0 0
  • 一直以来脑袋里都住着两个我,一个是天使一个是魔鬼,他们俩总在打架在我做任何决定或是有任何想法的时候,害得我总是把事...
    无疯不成魔阅读 133评论 0 0