我被要求缩短iOS应用程序的启动时间。我对平台/工具一般非常熟悉,但我之前没有专注于应用程序启动时间。我想知道是否有已知的模式来攻击这个问题?
我意识到我可以简单地测量从main()到完成application:didFinishLaunchingWithOptions:
(包括任何后台加载任务)所需的时间,但同样,我希望可能有更标准化的这样做的方法。
任何建议都将不胜感激!
-M
答案 0 :(得分:14)
来自WWDC 2012会议235
在main.m
#import <UIKit/UIKit.h>
CFAbsoluteTime StartTime;
int main(int argc, char *argv[])
{
StartTime = CFAbsoluteTimeGetCurrent();
@autoreleasepool {
...
将结束点设置在AppDelegate
的{{1}}
application:didFinishLaunchingWithOptions:
答案 1 :(得分:1)
您的方法听起来是正确的(我建议您使用CFAbsoluteTime进行测量)。
可以帮助您减少启动时间的一件事是避免在应用程序启动时从nib加载View Controllers。如果我没有弄错,这会迫使他们在应用程序启动之前加载到内存中。而是在需要时动态分配和初始化视图控制器。请注意,您仍然可以通过存储在Nib中的视图控制器加载视图,您不必停止使用IB。只是不要使用IB为您的应用代表设置静态插座。