面试题答案
一键面试类加载主要步骤及其作用
- 加载(Loading)
- 作用:从磁盘上的可执行文件(如Mach - O文件)中读取类的相关数据,包括类的定义、属性、方法列表等,并将这些数据映射到内存中。这一步为后续类的解析和初始化提供了基础数据。
- 链接(Linking)
- 符号绑定(Symbol Binding)
- 作用:将类中的符号引用(如方法调用、属性访问等)与实际的内存地址进行关联。在编译时,很多符号的具体地址是未知的,通过符号绑定,使得程序在运行时能够正确找到相应的实现。例如,将方法名与该方法在内存中的实际入口地址绑定起来。
- 合并与重定位(Merging and Relocation)
- 作用:把类的数据段与程序的其他部分合并,并且根据程序在内存中的实际加载地址,对类中的一些地址相关的部分进行调整(重定位)。确保类中的数据和代码能够正确地在内存中运行,比如修正类中对其他全局变量或函数的引用地址。
- 符号绑定(Symbol Binding)
- 初始化(Initializing)
- 作用:执行类的初始化代码,包括为类的静态变量赋初始值、调用
+load
方法等。+load
方法在类被加载到内存时就会被调用,常用于进行一些全局的初始化操作,如注册通知、初始化单例等。初始化使得类在使用前处于一个正确的初始状态。
- 作用:执行类的初始化代码,包括为类的静态变量赋初始值、调用