APP启动在main()函数之前的过程有哪些?

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会缓存上一次内存加载的信息,所以第二次比第一次启动快一点,

你可能感兴趣的:(APP启动在main()函数之前的过程有哪些?)