iOS程序启动内部过程(从点击图标到显示界面)
来源:互联网 发布:mac txt阅读器 编辑:程序博客网 时间:2024/05/22 07:42
1.用户点击应用程序图标;
2.程序执行main()函数;
3.main函数中直接返回的是UIApplicationMain,所以接下来执行UIApplicationMain;
4.根据UIApplicationMain中的第三、第四个参数分别设置UIApplication对象及其代理;第三个参数是UIApplication的类名或者子类名,如果为nil则默认是UIApplication,第四个参数代表代理的类名,该代理负责处理应用程序状态切换过程中所产生的事件;
5.开启循环监听系统事件(Event Loop);
6.此处分有storyboard和没有storyboard两种情况,
(1)有stroyboard
> 应用程创建一个UIWindow对象(继承自UIView),并设置为AppDelegate的window属性。
> 加载Info.plist文件,读取最主要storyboard文件的名称。
> 加载最主要的storyboard文件,创建白色箭头所指的控制器对象。并且设置控制器为UIWindow的rootViewController属性(根控制器)。
> 展示UIWindow,展示之前会将添加rootViewController的view到UIWindow上面(在这一步才会创建控制器的view),其内部会执行该行代码:[window addSubview: window.rootViewControler.view];
(2)没有stroyboard
> 首先会调用delegate对象的application:didFinishLaunchingWithOptions:方法。
> 在application:didFinishLaunchingWithOptions:方法中需要主动创建 UIWindow对象。并设置为AppDelegate的window属性。
> 主动创建一个 UIViewController对象,并赋值给window的rootViewController属性。
> 调用 window的makeKeyAndVisible方法显示窗口。
//创建窗口对象 self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; //创建主控制器对象(控制器的View是延时加载的,等到用到的时候再用loadView方法加载) self.HITViewController = [[UIViewController alloc]initWithNibName:@"HITViewController" bundle:nil]; //设置窗口的根控制器为该主控制器 self.window.rootViewController = self.HITViewController; //让窗口成为主窗口并可见 [self.window makeKeyAndVisible];
程序加载的顺序是先在程序中找storyboard,若果没有找到则找相应的xib,若是都没找到并且代理中没有手动添加代码,则默认用代码创建一个黑色的界面;
- iOS程序启动内部过程(从点击图标到显示界面)
- Android 应用点击图标到Activity界面显示的过程分析
- Android 应用点击图标到Activity界面显示的过程分析
- 一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)
- 寻找windows程序的启动过程,就是从点击程序图标开始起,程序是怎样运行的?
- iOS 从点击到启动 (深层 转)
- iOS程序启动过程,原理,UIApplication,代码启动界面 - iOS
- iOS 程序内部直接跳到系统设置界面
- linux系统从开机到登陆界面的启动过程
- linux系统从开机到登陆界面的启动过程
- a500从拨号到通话界面显示的过程
- iOS开发之App从点击到启动
- app从点击到启动
- 当某个程序已经启动,再点击程序快捷方式如何切换到已打开的程序界面(程序只允许启动一个实例)
- 分析一个android程序从建立到启动的过程
- IOS TabBar 点击不显示图标
- iOS 程序启动过程
- IOS ----- 程序启动过程
- 如何查看自己电脑的IP和MAC
- 设计模式(十五)组合模式
- 剑指offer:和为S的连续正数序列
- 不用求值器绘制双二次及双三次Bezier曲面
- leetcode 1-Two Sum
- iOS程序启动内部过程(从点击图标到显示界面)
- HDU-ACM2023
- JAVA技术发展——你不知道的J2SE(三)
- mysql 默认引擎innodb 初探(一)
- Python 文件及文件夹操作记录
- js的Date对象
- HDU-ACM2024
- Spring NamedParameterJdbcTemplate 详解
- Spark-Avro学习1之使用SparkSQL读取AVRO文件