多控制器
UIApplication
-
概念
- UIApplication对象是系统帮我们创建的,每一个应用都有自己的UIApplication对象,它是一个单例对象
- 系统一启动就会创建
- 什么是单例对象?使用单例对象有什么好处?
- 内存中有且只有一个对象
- 节省空间,提高性能
- 我们能否创建UIApplication对象?
- 我们不能创建它,只能通过
[UIApplication sharedApplication]
来获得这个单例对象
- 利用UIApplication对象,我们可以进行一些应用级别的操作;
- 设置互联网指示器的可见
- 设置应用程序图标上右上角红色提醒数字
- 设置应用程序的状态栏
- 进行应用之间的跳转
- UIApplication对象是系统帮我们创建的,每一个应用都有自己的UIApplication对象,它是一个单例对象
代码实现UIApplication
- 模拟创建UIApplication
- 要求:
- 程序一启动就会创建对象;
- 创建的对象只能通过shared的方式来获得
- 不能进行alloc操作,当执行alloc的时候程序会崩溃
- 要求:
static Person * _people; //用静态变量保存成员属性
+(void)load //优先级高于main,类被加载到内存中会调用
{
_people = [[Person alloc]init];
}
+(instancetype)sharedPerson //创建通过share获取对象的类方法
{
return _people;//直接返回系统创建的单例对象
}
-
验证模拟思路是否正确
Person * p = [Person sharedPerson]; Person * p1 = [Person sharedPerson];
-
两个对象的内存地址一样
-
模拟使用alloc的时候程序崩溃状态
+(instancetype)alloc
{
if (_people)
{
NSException *exception = [NSException exceptionWithName:@"NSInternalInconsistencyException"
reason:@"There can only be one Persion instance."userInfo:nil];
[exception raise];
}
return [super alloc];
}
-
模拟系统用alloc方法获取 UIApplication对象出现的错误
UIApplication实际应用
一.设置应用提醒数值
1.思路:
-
获取UIApplication对象
UIApplication *application = [UIApplication sharedApplication];
-
创建注册用户通知对象(当然也可以不创建);
UIUserNotificationSettings * user = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
-
UIApplication注册用户通知对象;
[application registerUserNotificationSettings:user];
-
设置UIApplication对象的用户提醒数值;
application.applicationIconBadgeNumber =23;
2.效果图
- 点击按钮弹出通知对话框
- 按command + shift + H 可以回到模拟器的主界面,查看图标上面的提示数字
设置联网状态
1.思路
-
获取UIApplication对象
UIApplication *application = [UIApplication sharedApplication];
-
打开联网指示器的可见性
application.networkActivityIndicatorVisible = YES;
-
控制联网状态显示
2.效果展示
未点击按钮
-
点击按钮之后
管理状态栏
1.思路
- 状态栏是由ViewController管理的.我们要通过UIApplication对象对状态栏进行管理,需要在info.plist文件中更改一个属性
-
默认状态
-
更该选项
-
获取UIApplication对象
UIApplication *application = [UIApplication sharedApplication];
-
管理状态栏
- 进入编译器头文件中看状态栏的前景色,默认是
UIStatusBarStyleDefault
;
- 通过更改状态栏的前景色,和状态栏的属性
- 进入编译器头文件中看状态栏的前景色,默认是
application.statusBarStyle = UIStatusBarStyleLightContent;
//这个方法已经过去,但是还可以使用
[application setStatusBarHidden:YES animated:YES];
2.呈现效果
- 未点击按钮
- 改变前景色
- 通过UIApplication对象改变状态栏属性
打开一个url
1.思路
- 获取UIApplication对象
```
UIApplication *application = [UIApplication sharedApplication];
```
- 创建一个url
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
- 通过UIApplication对象打开url
[application openURL:url];
2.效果展示
- 点击按钮
- 页面跳转
- 网页显示
UIApplication的代理
- 在使用手机应用的时候,有时会接到电话或者照相之类的,会导致app进入后台或者终止,还有很多情况会干扰到app的使用,这样app就会产生很多系统事件,那么这个时候UIApplication就会通知delegate对象,让delegate对象来处理这些系统事件
-
代理协议里面的一些方法