美文网首页
UIApplication

UIApplication

作者: 纳木错_grace | 来源:发表于2016-06-30 22:09 被阅读40次

简介:

1,UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。

2,每一个应用都有自己的UIApplication对象,而且是单例的,如果用alloc方法新建一个,会报错

3,获得UIApplication 的方法:[UIApplication sharedApplication]

4,一个ios程序启动后创建的第一个对象就是UIApplication对象,而且只有一个

5,利用Application对象,能进行一些应用级别的操作

1,显示图标上的提醒数字

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

UIApplication *app=[UIApplication sharedApplication];

app.applicationIconBadgeNumber=1;

2,openUrl方法

UIApplication *app = [UIApplication sharedApplication];

打电话:[app openUrl:[NSUrl urlWithString:@“tel://100000”]];

发短信:[app openUrl:[NSUrl urlWithString:@“sms://111111”]];

发邮件:[app openUrl:[NSUrl urlWithString:@“mailto://111111@qq.com”]];

打开网页资源:[app openUrl:[NSUrl urlWithString:@“http://www.baidu.com”]];

打开地图:

NSString *addressText = @"beijing";

addressText = [addressText stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

NSString *urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];

NSLog(@"urlText =============== %@", urlText);

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlText]];

3,判断程序运行状态

/*

UIApplicationStateActive,

UIApplicationStateInactive,

UIApplicationStateBackground

*/

if([UIApplicationsharedApplication].applicationState ==UIApplicationStateInactive){

NSLog(@"程序在运行状态");

}

4,显示联网标记

[UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;

5,阻止屏幕变暗进入休眠状态:(慎用,耗电)

[UIApplicationsharedApplication].idleTimerDisabled =YES;

一、程序主函数

int main(int argc, char * argv[]) {

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

}

}

程序启动后,先进入main函数,之后,执行UIApplicationMain这个函数,其中各个参数的意思如下:

1,argc:系统或者用户传入的参数个数

2,argue:系统或者用户传入的实际参数

3,指定应用程序类名:(app的象征),该类必须是UIApplication或其子类,如果是nil,则默认是UIApplication类

4:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议

UIApplicationMain函数会根据第三个参数(类名)创建UIApplication对象,根据第四个参数(代理类名(必须遵守协议))创建一个delegate对象,并将该对象赋值给UIApplication对象中的delegate属性;接着会建立应用程序的Main Runloop(事件循环)【可以理解为里面是一个思循环,这个事件循环是一个队列(先进先出),先添加进去的先处理】,进行事件处理,(首先在程序加载完毕后,调用delegate对象的application:didFinishLaunchingWithOptions:方法),程序正常退出时,UIApplicationMain函数才返回

二、程序启动的完整过程
1,main函数

2,UIApplicationMain:

*:创建UIApplication对象。

*:创建UIApplication的delegate对象

3,delegate对象开始处理(监听)系统事件,(没有storyBoard情况)

*程序启动完毕的时候,就会调用代理的application:didFinishLaunchingWithOptions:方法,

*在application:didFinishLaunchingWithOptions:中创建UIWindow

*创建和设置UIWindow的rootController

*显示窗口

3,根据Info.plist获得最主要的storyBoard文件名,加载最主要的storyBoard(有storyBoard)

*创建UIWindow;

*创建和设置UIWindow是rootViewController

*显示窗口

三、程序启动原理图如下:

1,application:didFinishedLaunchingWithOptions:程序加载完毕

2,applicationDidBecomeActive:程序获取焦点

3,applicationDidEnterBackground:程序进入后台

在该方法中保存应用程序的数据,以及状态;要设置程序后台继续运行,在这个方法里

4,applicationWillResignActive:程序失去焦点

程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,例如来电话

5;applicationWillEnterForeFround:程序从后台回到前台

在该方法中恢复应用程序的数据,以及状态

6:applicationDidReceiveMemoryWaring:内存警告,可能要终止程序

一般在该方法内释放掉不需要的内存

7:applicationWillTerminate:程序即将退出

相关文章

网友评论

      本文标题:UIApplication

      本文链接:https://www.haomeiwen.com/subject/txjfjttx.html