9-3一个App从点击图标,到程序启动,运行,最后到退出,系统发生了什么?

来源:9-3 RunLoop事件循环机制相关面试问题

lsyyyy

2019-03-13

老师说的那个是match point吗,不太确定
答案:我们调用了main函数之后,会调用UIApplicationMain函数,在函数内部会启动主线程runloop,经历了一系列的处理,最终主线程runloop处于休眠状态,此时我们点击屏幕,会产生match point,基于match point,最终会转成一个source1,把主线程唤醒运行处理,最后当我们把程序杀死,会发生runloop的退出,此时会发送通知,即将退出runloop,runloop退出之后,线程也就销毁掉了。

写回答

2回答

慕函数8714826

2021-06-18

先进行编译,加载.h.m等文件,然后进行预编译,将文件生成.i文件,进行编译,将.i文件转化成汇编语言文件.s文件,然后进行汇编,生成mach-o文件。然后开始启动app,系统开启一个进程,加载mach-o文件,得到dyld的路径,加载dyld到进程里,然后递归加载所依赖的动态库,包括系统的和依赖的第三方的。然后进行rebase指针的调整,bind符号绑定。然后初始化runtime,注册class,catecory等,调用每个类的load函数,然后寻找main函数的入口,执行main函数,开启主线程的runloop。执行到appdelegate里面。


0
0

于海

2019-03-15

你说的大致上是没问题的,点击app图标之后main之前发生了很多事,可比如动态链接器做程序可执行文件的加载 启动runtime 初始化libdispatch等等

0
0

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程