UIApplication的介绍以及底层实现原理

简介: UIApplication的介绍以及底层实现原理

先说点题外话:


UIApplication是应用程序系统的单例对象,单例到底是什么呢?下面是我的解释:


单例在应用程序只有一份内存,并不会分配很多的内存.


前面的最初我也解释了单例


一.先讲讲UIApplication能做些什么??


  • 1.设置应用程序图标的提醒数字


image.png

代码如下


有必要说一下UIApplication使用单例创建的,但里的常见一般是share+类名

//1.获取应用程序的对象
UIApplication *app = [UIApplication sharedApplication];
//2.设置应用程序图标的提醒数字
app.applicationIconBadgeNumber = 100;
//3.创建通知对象
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
//4.注册用户新通知
[app registerUserNotificationSettings:setting];


  • 2.设置联网的提示


image.png


[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;


  • 3.设置状态栏


image.png


(1).在iOS7之后,状态栏默认交给控制器来管理了(需要早info.plist里面进行设置:先添加addrow 输入大写APP,徐泽最后一个View controller-based status bar appearance = NO),这样就不再由控制器来管理状态栏了,下面的代码才能起到效果


还需要在info.plist配置(只有配置了,下面的这句话才能将状态栏隐藏)

app.statusBarHidden = YES;


image.png


(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]));


image.png


四.最后附上一张图


image.png

目录
相关文章
|
6月前
|
NoSQL API Redis
数据对象的底层实现方式你都了解吗?
上一小节我们提到的五种数据类型其实就是 Redis 的数据对象,我们先来看看数据对象的类型:Redis 的 key 都是 string 类型的,以上各类型说的其实都是 value 的类型,以下是对象的几个优点:
54 0
数据对象的底层实现方式你都了解吗?
|
6月前
|
存储 NoSQL Redis
Redis数据结构完全解析:底层实现细节揭秘
Redis数据结构完全解析:底层实现细节揭秘
|
1月前
|
存储 索引 Python
字典是怎么实现的,它的底层结构长什么样子?
字典是怎么实现的,它的底层结构长什么样子?
56 2
|
2月前
|
JavaScript 前端开发 开发者
探索yocto-queue库:替代数组的实现原理与方法
在需要高性能队列结构的场景下,yocto-queue提供了一个轻量级且高效的解决方案。它的实现原理优雅且有效,使得在实际应用中,特别是在性能敏感的环境下,成为了数组的一个强大替代者。通过减少性能开销,yocto-queue使得JavaScript开发者能够构建更快、更可靠的应用程序,从而提高用户体验和应用性能。
44 2
|
缓存 C++
12-objc_msgSend底层调用流程探究
12-objc_msgSend底层调用流程探究
59 0
|
设计模式 算法 C++
01-OC对象的底层实现之alloc、init、new源码解读
01-OC对象的底层实现之alloc、init、new源码解读
224 0
|
安全 测试技术 C++
C++ 实现线程安全的map(OpenHarmony源码实现版)
C++ 实现线程安全的map(OpenHarmony源码实现版)
|
存储 并行计算 安全
ConcurrentHashMap的使用方法及其内部实现原理
ConcurrentHashMap的使用方法及其内部实现原理
182 0
|
存储 调度 iOS开发
runloop的基本概念和实现原理
runloop的基本概念和实现原理
379 0
runloop的基本概念和实现原理
|
iOS开发
UIWindow的讲述以及底层
UIWindow的讲述以及底层
138 0
UIWindow的讲述以及底层