为什么一个类的+ load()在objc的main()之前执行?

问题描述:

为什么在项目的主函数之前调用了类'+ load()方法?主要功能不是应用程序的入口吗?谁调用了+加载方法?为什么一个类的+ load()在objc的main()之前执行?

来自:NSObject +load and +initialize - What do they do?

运行时发送负荷消息发送到每个类对象,很快之后类对象被加载到进程的地址空间。对于作为程序可执行文件一部分的类,运行时会在进程的生命周期中尽早发送加载消息。

首先:它是+load,不load()+load()不语法存在),因为它是一种方法,不是一个函数。

main()是应用程序的入口点。 load是从运行时环境发送的,明显是在应用程序“启动”之前通过调用main()启动的。

实际上,在加载包后,包中的所有类对象都会收到load消息。显然这比每个班级都有一个标志要容易得多,不管它是否已经得到了这个信息。

但是,这不应该是你的代码的问题,因为实现+load不应该依赖于类之外的任何东西。