在Objective-C中,什么在main之前调用?

时间:2014-06-02 04:51:39

标签: objective-c

在Objective-C中,什么在main之前被调用?例如,我假设Objective-C中的所有元类都在main之前实例化,并且它们的load / initialize方法被调用,全局常量等等。还有什么?这是在任何地方记录的吗?

1 个答案:

答案 0 :(得分:2)

+load方法是应用程序中任何类的一部分(不在任何加载的框架中),将在main()之前执行。完整的执行顺序在+load文档(NSObject类引用)中给出:

  

load消息被发送到动态加载和静态链接的类和类别,但前提是新加载的类或类别实现了可以响应的方法。

     

初始化顺序如下:

     

•您链接到的任何框架中的所有初始值设定项。

     

•图片中的所有+load种方法。

     

•图像中的所有C ++静态初始值设定项和C / C ++ __attribute__(constructor)都起作用。

     

•链接到您的框架中的所有初始值设定项。

     

另外:

     

•在所有超类的+load方法之后调用类的+load方法。

     

•在类自己的+load方法之后调用类别+load方法。

     

在自定义的加载实现中,您可以安全地从同一图像中发送其他不相关的类,但是这些类实现的任何加载方法可能还没有运行。

因此,如果您向应用委托类添加+load,则会在main()之前运行。

HTH