先说点题外话:
UIApplication是应用程序系统的单例对象,单例到底是什么呢?下面是我的解释:
单例在应用程序只有一份内存,并不会分配很多的内存.
前面的最初我也解释了单例
一.先讲讲UIApplication能做些什么??
- 1.设置应用程序图标的提醒数字
代码如下
有必要说一下UIApplication使用单例创建的,但里的常见一般是share+类名
//1.获取应用程序的对象
UIApplication *app = [UIApplication sharedApplication];
//2.设置应用程序图标的提醒数字
app.applicationIconBadgeNumber = 100;
//3.创建通知对象
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
//4.注册用户新通知
[app registerUserNotificationSettings:setting];
- 2.设置联网的提示
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
- 3.设置状态栏
(1).在iOS7之后,状态栏默认交给控制器来管理了(需要早info.plist里面进行设置:先添加addrow 输入大写APP,徐泽最后一个View controller-based status bar appearance = NO),这样就不再由控制器来管理状态栏了,下面的代码才能起到效果
还需要在info.plist
配置(只有配置了,下面的这句话才能将状态栏隐藏)
app.statusBarHidden = YES;
(2).如果想用控制器来控制就用下面的方法
-(BOOL)prefersStatusBarHidden
{
return YES;
}
(3).手动更改iOS状态栏的颜色
- (void)setStatusBarBackgroundColor:(UIColor *)color
{
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)])
{
statusBar.backgroundColor = color;
}
}
-
4.打电话,发短息,打开网页
//URL:资源的唯一路径(唯一的标识符) [app openURL:[NSURL URLWithString:@"www.baidu.com.cn"]];
二.讲讲main.m里面UIApplicationMain 底层的实现
//1.根据principalClassName传递的类名创建UIApplication对象
//2.创建UIApplication代理对象,给UIApplication 对象设置代理
//3.开启主运行事件循环,处理事件
//4.加载info.plist,判断下是否指定main,如果制定了,就会去加载
* @param nil UIApplication 类名或者子类的名称 nil == @"UIApplication"
* @param class] UIApplication代理的类型的名称
*
* NSStringFromClass 将类名转化为字符串 == @"AppDelegate"
* @return NSStringFromClass :功能1.是为了有提示功能 2.避免输入错误
UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName);
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
四.最后附上一张图