APP启动在main()函数之前的过程有哪些?
2018-07-12 本文已影响31人
CyanCricket
1,dyld开始将程序二进制文件初始化
2,交由ImageLoader读取image,其中包含了我们的类,方法等各种符号(class,Protocol,Selector,IMP)
3,由于runtime向dyld绑定了回调,当image加载到内存后,dyld会通知Runtime进行处理
4,Runtime接手后调用map_images做解析和处理
5,接下来load_images中调用call_load_methods,遍历所有加载进来的class.按继承层次依次调用class的+load和其他Category的+load方法
6.至此,所有信息都被加载到内存中
7,最后调用真正的main函数
注意的是:dyld会缓存上一次内存加载的信息,所以第二次比第一次启动快一点,