iOS 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、最后dyld调用真正的main函数

注意:dyld会缓存上一次把信息加载内存的缓存,所以第二次比第一次启动快一点



你可能感兴趣的:(iOS main()之前的过程)