Load和Initialize

5/31/2021

这两个方法会经常被问到,主要是调用方式、调用时刻和调用顺序。下面逐个分析和对比。

# Load

# Load方法的调用

  • 调用方式: 系统自动调用+load方法为直接通过函数地址调用,开发者手动调用+load方法为消息机制objc_msgSend函数调用
  • 调用时刻: +load方法会在Runtime加载类和分类时调用,不管有没有用到这些类,在程序运行起来的时候都会加载进内存,并调用+load方法
  • 调用顺序:
    • 先调用类的+load方法,按照编译先后顺序调用(先编译,先调用),调用子类的+load方法之前会先调用父类的+load方法。
    • 再调用分类的+load方法,按照编译先后顺序调用(先编译,先调用),注意:分类的其他方法是后编译优先调用

# 源码分析

Last Updated: 10/25/2024, 6:55:06 AM