首页 > 其他分享 >UIApplication 基础篇介绍

UIApplication 基础篇介绍

时间:2023-09-01 12:01:59浏览次数:35  
标签:对象 app 基础 介绍 单例 YES UIApplication sharedApplication


做iOS开发的同学对UIApplication一定不陌生,当我们想要弹框,蒙层等功能时,都会使用类似如下的操作:

UIWindow *delegateWindow = [UIApplication sharedApplication].delegate.window;

UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;

这里面delegateWindow和keyWindow的区别你是否了解?还有UIApplication是不是也深入了解过?

UIApplication,代表的是整个应用做的事,因此每个程序只能有一个,系统使用的是单例模式,就是上面的[UIApplication sharedApplication]来得到一个实例。这个单例实例是在系统启动时由main函数里面的UIApplicationMain方法生成,就是每个程序里都有的AppDelegate,它实现了UIApplicationDelegate的Protocol,也就是AppDelegate的一个实例。每次通过[UIApplication sharedApplication]调用的就是它。  

UIApplication在程序里的角色:它保存一个UIWindow对象序列,用来快速恢复views。

UIApplication的核心作用是提供了iOS程序运行期间的控制和协作工作。  

1.简单介绍

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

(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。

(3)通过[UIApplicationsharedApplication]可以获得这个单例对象

(4) 一个iOS程序启动后创建的第一个对象就是UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。

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

2.应用级别的操作示例:

1)设置应用程序图标右上角的红色提醒数字(如QQ消息的时候,图标上面会显示1,2,3条新信息等。)

@property(nonatomic) NSInteger applicationIconBadgeNumber;

代码实现和效果:

UIApplication 一些其他属性
//通过sharedApplication获取该程序的UIApplication对象
UIApplication *app=[UIApplication sharedApplication];
app.applicationIconBadgeNumber=123;
//设置指示器的联网动画
app.networkActivityIndicatorVisible=YES;
//设置状态栏的样式
//app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色)
//设置为白色+动画效果
[app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
//设置状态栏是否隐藏
app.statusBarHidden=YES;
//设置状态栏是否隐藏+动画效果
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

标签:对象,app,基础,介绍,单例,YES,UIApplication,sharedApplication
From: https://blog.51cto.com/u_15344421/7320668

相关文章

  • 一、微信小程序(基础)
    微信小程序生命周期app.js内置方法与全局方法,内置方法都放在wx命名空间下,可以通过wx.来调用wxml基本概念wxml是模仿html创建出来的一种文件格式,html可以被浏览器识别,而wxml封装后的组件是不能被浏览器识别的,例如一些web端框架就不适用于操作wxml组件了wxml共有属性:id,clas......
  • mysq基础
    mangoDB一、认识MangoDB    1、简介:        基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案,将数据存储为一个文档,文档类似与Json格式,      {   name:"小明",   age:16,   address:{city:"长沙",......
  • 查看es结构,es _search查询基础语法
    查看es结构,es_search查询基础语法http://xx.xx.xx.xx:9200/ ES地址car_info/_searchPOST{}POST{"query":{"match":{"carNo":"573702440"}}}{ "query":{"term":{......
  • CSS BFC 介绍及应用
    概念BFC(BlockFormattingContexts块级格式化上下文)是CSS中的一个重要概念。它是页面上一个独立的渲染区域,如果一个元素具有BFC特性,则内部子元素在任何情况下都不会影响到外部元素,也不会被外部元素影响。例如:处理浮动问题:当父元素包含浮动元素时,父元素的高度坍塌,这导致......
  • Jenkins 基础配置
    博客地址:https://www.cnblogs.com/zylyehuo/参考链接解决:Jenkins:signatureverificationfailedinupdatesite‘default‘(showdetails)jenkins下一切皆文件虚拟机基本配置Jenkins安装cd/usr/local/src/rz#选择以下安装包(xshell软件命令)下......
  • Kafka-基础
    1.简介Kafka(ApacheKafka)是一种分布式流数据平台,最初由LinkedIn开发,并于后来捐赠给Apache软件基金会,成为了一个Apache顶级项目。它被设计用于处理大规模、实时的数据流,并为构建高吞吐量、容错性强的数据流应用程序提供支持。Kafka的特点使得它在日志收集、实时处理、事件驱动架......
  • Python 基础面试第三弹
    1.获取当前目录下所有文件名importosdefget_all_files(directory):file_list=[]#os.walk返回一个生成器,每次迭代时返回当前目录路径、子目录列表和文件列表forroot,dirs,filesinos.walk(directory):forfileinfiles:file_l......
  • mysql基础
    --创键数据库test(如果不存在)CREATEDATABASEIFNOTEXISTStest--删除数据库test(如果存在)DROPDATABASEIFEXISTStest--使用该数据库USEschool--表名或字段名是特殊字符用``包含(tab键上......
  • ThreadLocal的介绍及其使用
    privatestaticfinalThreadLocal<Integer>THREAD_LOCAL=newThreadLocal<>();@TestvoidthreadLocalTest(){Assertions.assertDoesNotThrow(()->{//线程1存储数据Threadt1=newThread(()->{......
  • ReentrantLock的介绍及其用法
    Reentrantlock默认是非公平锁privatestaticReentrantLocklock=newReentrantLock();若想实现公平锁,只需在构造器的fair参数传入trueprivatestaticReentrantLocklock=newReentrantLock(true);公平锁会按照线程请求锁的顺序进行获取,遵循先到先得的原则。而非公平锁则......