如何在应用程序启动时自动运行我的框架代码?

Chr*_*lli 3 cocoa-touch ios ios-frameworks

我正在构建一个将包含在其他应用程序中的框架.我有一些代码需要在应用程序首次启动时运行.

许多框架要求开发人员在开始时包含一行[UIApplicationDelegate application:didFinishLaunchingWithOptions:]来初始化他们的框架.但是,我注意到Reveal的框架不需要这个.只需在项目中包含框架即可与您的应用程序集成,并在您的应用程序中启动其Web服务器.

他们如何做到这一点?

Nic*_*ari 8

派生自的Objective-C类NSObject具有类方法+initialize+load.

第一个是在你第一次向课程发送消息时运行,所以除非你-application:didFinishLaunchingWithOptions:按照你提到的那样做,否则没有用.

对于应用程序中的每个类,第二个被调用一次,即使它没有被使用:

讨论

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

初始化顺序如下:

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

  2. 图像中的所有+加载方法.

  3. 所有C++静态初始化器和C/C++ 属性(构造函数)都在您的映像中运行.

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

此外:

  • 在所有超类的+加载方法之后调用类的+ load方法.

  • 在类自己的+ load方法之后调用category + load方法.

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

来源: Apple的官方文档(NSObject类参考).

也许您可以将初始化逻辑放在那里.

如果你使用swift,我不知道任何方法.