[iOS基础控件-6.10.6]UIApplicationDelegate&程序启动过程

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

A.概念

1.移动app非常容易受到其他的系统、软件事件的干扰,如来电、锁屏

2.app受到干扰的时候,UIapplication会通知delegate,来代理处理干扰事件

3.delegate可以处理的事件

(1)app声明周期(启动、关闭)

(2)系统事件(来电)

(3)紧急事件(内存警告)

B.使用

称为delegate的条件:遵守UIApplicationDelegate协议

项目开始会自动创建:AppDelegate

1.delegate方法

1- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {2NSLog(@"app启动完毕的时候调用");3returnYES;4}56- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {7NSLog(@"app接收到内存警告时调用");8}910- (void)applicationDidEnterBackground:(UIApplication *)application {11NSLog(@"app进入后台的时候调用");12}1314- (void)applicationWillResignActive:(UIApplication *)application {15NSLog(@"app将要被挂起");16}1718- (void)applicationWillEnterForeground:(UIApplication *)application {19NSLog(@"app回到前台");20}2122- (void)applicationDidBecomeActive:(UIApplication *)application {23NSLog(@"app激活后");24}2526- (void)applicationWillTerminate:(UIApplication *)application {27NSLog(@"app将要关闭");28}29

(1)一般的app操作触发delegate代理监听事件流程:

(2)整个app的启动过程:

2.main函数中调用的UIApplicationMain函数

1intmain(intargc,char*argv[]) {2@autoreleasepool {3returnUIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegateclass]));4}5}

函数定义:

UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *PRincipalClassName, NSString *delegateClassName);

(1)principalClassName

a.Application类名,必须是UIApplication或者其子类的类名

b.如果是nil,则默认是UIApplication

c.UIApplicationMain函数根据principalClassName创建UIApplication对象

(2)delegateClassName

a.delegate类名,此类必须遵守UIApplicationDelegate协议

b.UIApplicationMain函数根据delegateClassName创建一个delegate,并将其赋值给UIApplication的delegate属性

(3)进入Main Runloop 事件循环,使用delegate对事件进行监听

(4)程序正常退出,UIApplicationMain函数返回

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航