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