MST

星途 面试题库

面试题:Objective-C中类加载流程简述

请简要描述Objective-C运行时中类加载的主要步骤及其作用。
21.6万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

类加载主要步骤及其作用

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