在Objective-C中,什么在main之前被调用?例如,我假设Objective-C中的所有元类都在main之前实例化,并且它们的load / initialize方法被调用,全局常量等等。还有什么?这是在任何地方记录的吗?
答案 0 :(得分:2)
+load
方法是应用程序中任何类的一部分(不在任何加载的框架中),将在main()
之前执行。完整的执行顺序在+load
文档(NSObject
类引用)中给出:
load
消息被发送到动态加载和静态链接的类和类别,但前提是新加载的类或类别实现了可以响应的方法。初始化顺序如下:
•您链接到的任何框架中的所有初始值设定项。
•图片中的所有
+load
种方法。•图像中的所有C ++静态初始值设定项和C / C ++
__attribute__(constructor)
都起作用。•链接到您的框架中的所有初始值设定项。
另外:
•在所有超类的
+load
方法之后调用类的+load
方法。•在类自己的
+load
方法之后调用类别+load
方法。在自定义的加载实现中,您可以安全地从同一图像中发送其他不相关的类,但是这些类实现的任何加载方法可能还没有运行。
因此,如果您向应用委托类添加+load
,则会在main()
之前运行。
HTH