iPhone应用程序发布时间,生命周期问题

Jam*_*s J 1 iphone

我正在尝试用一种方法来确定用户点击应用程序图标后多长时间才能让应用程序为用户输入做好准备.

据我所知,我可以插入要运行的代码的第一个地方是main.m中的main()函数,并且在接受用户输入之前完成的最后一件事是在app delegate中调用applicationDidFinishLaunching.但是,我发现应用程序启动后几秒钟内没有调用main(),也无法找出原因.

我对应用程序生命周期的理解是否正确?在生命周期的早期是否有一些地方我可以开始测量这些信息?有人有解决方案吗?

Nik*_*uhe 7

之前发生了一些事情main:

  • 分配地址空间(用于堆栈,可执行文件,...)
  • 可执行文件已加载
  • 进程链接到dyld(动态链接器)
  • 执行mach头中的加载命令(加载框架和库)
  • 更多页面被分配用于库的静态存储
  • dyld执行符号解析
  • 执行库和可执行文件的初始化

这应该只列出在调用main之前发生的一些事情.您可以将代码置于其中一个初始化函数中,以便能够在main之前执行一些操作,但不要期望这会减少tap和代码之间的延迟.

您可以在main之前声明要调用的C函数,如下所示:

void __attribute__ ((constructor)) my_init(void);
Run Code Online (Sandbox Code Playgroud)

如果你需要做Objective-C的事情,你可以+initialize在你的一个课程中实现.