+load和+initialize方法的区别

调用方式

  • load函数直接调用。
  • initialize是通过objc_msgSend调用。

调用时刻

  • load是在程序初始化的时候调用。(只调用一次)
  • initialize在类第一次接收到消息的时候调用。

调用顺序

  1. load
  • 先调用类中的load
    先编译的类先调用load
    在调用子类的load之前,会先调用父类的
  • 后调用category中的load
    先编译的先调用
  1. initialize
  • 父类先于子类调用
  • category会覆盖本类中的initialize
  • 子类没实现会调用父类的,所以父类的initialize可能调用多次

你可能感兴趣的:(+load和+initialize方法的区别)