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

先说点题外话:

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

四.最后附上一张图

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容