【底层探索】dyld浅析


本页所使用的objc runtime 756.2,来自GITHUB

一、引言

前文研究了对象、方法的基础,知道了对象/类的结构,类方法的生成和传递原理。下面该进入到核心环节,就是类的加载了,在这一个模块,需要了解的有下面几点:

  • OC 的库
  • app 的加载流程
  • image 的结构
  • 回调函数
  • image 的加载流程

二、库

2.1、静态库

是一个外部函数与变量的集合体

iOS 在编译时执行静态库,链接到相应代码

静态库的文件内容,通常包含一堆程序员自定的变量与函数,其内容不像动态链接库那么复杂,在编译期间由编译器与链接器将它集成至应用程序内,并制作成目标文件以及可以独立运作的可执行文件。

常见的iOS 环境下的静态库由 .a 文件,.framework 文件。java 环境下有.so 静态库

2.2、动态库

iOS 在运行时执行动态库,链接到相应的代码里。

.dylib 库文件

三、App 启动流程

1. dyld start

libdyld.dylib`start

2. 加载镜像

reloadAllImages:

3. 加载链接

loadInsertedDylib
  • 插入(insert): 插入网线
  • 链接(link): 接通网络

四、dyld

4.1 start

4.2 递归初始化

4.3 objc_init

五、镜像 - images

  • dyld
  • Objc_init

六、回调函数

  • 指针
  • 注册
  • *snotif

文章作者: 李佳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 李佳 !
评论
 上一篇
【类的加载】-(1)类的启动 【类的加载】-(1)类的启动
本页所使用的objc runtime 756.2,来自 Apple 开源文档 类的加载探寻系列:1、【类的加载】-(1)类的启动 2、【类的加载】-(2)懒加载类与分类 3、【类的加载】-(3)loading_images 1、ob
2020-03-24 李佳
下一篇 
方法的本质4_消息转发机制 方法的本质4_消息转发机制
本页所使用的objc runtime 756.2,来自GITHUB 1、回顾上文消息方法的本质3_消息查找流程 一文总结了方法查找的流程,得到结论如下: 类的缓存里查找——找到——结束查找 类的方法列表里查找——找到——结束查找 递
2020-03-13 李佳
  目录