博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
app启动过程
阅读量:6147 次
发布时间:2019-06-21

本文共 772 字,大约阅读时间需要 2 分钟。

调用main函数之前:

App开始启动后,系统首先加载可执行文件(自身App的所有.o文件的集合),然后加载动态链接库dyld。交由 ImageLoader 读取 image,其中包含了我们的类、方法等各种符号

注册Objc类 (class registration) 把category的定义插入方法列表 (category registration) 保证每一个selector唯一 (selctor uniquing)

Objc的+load()函数

 

整个事件由 dyld 主导,完成运行环境的初始化后,配合 ImageLoader 将二进制文件按格式加载到内存, 动态链接依赖库,并由 runtime 负责加载成 objc 定义的结构,所有初始化工作结束后,dyld 调用真正的 main 函数。

 

调用main函数:

1.根据传入的第三个参数,创建UIApplication对象 
2.根据传入的第四个产生创建UIApplication对象的代理 
3.设置刚刚创建出来的代理对象为UIApplication的代理 
4.开启一个事件循环(可以理解为里面是一个死循环)这个时间循环是一个队列(先进先出)先添加进去的先处理
5.加载Info.plist文件,看是否指定了main.storyboard,如果设置了就去加载main.storyboard
当程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的UIView,将控制器的View添加到UIWindow上,控制器的 UIView 就显示在屏幕上。注意 UIWindow 本身不做显示,是控制器的UIView做展示,UIWindow 会给视图分发事件。

转载于:https://www.cnblogs.com/diyigechengxu/p/10150934.html

你可能感兴趣的文章
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>