iOS:获取应用程序启动时间

iOS:获取应用程序启动时间,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,是否可以确定当前应用程序从首次显示启动屏幕开始启动的时间?我希望确保启动屏幕显示一定的最短时间。我建议在应用程序代理的-[id应用程序:应用程序将使用选项完成启动:]方法,并存储该值以供以后使用。这会让人觉得你的应用程序响应性较差,通常是一种糟糕的用户体验。但从技术角度来看,在uiapplicationelegate上的每个委托方法中删除断点或NSLogs,以查看它们触发的顺序,并在时间分析器中运行应用程序以查看花费的时间 WWDC会议专门讨论如何缩短用户点击应用程序图标到应用程序完全启动并准备

是否可以确定当前应用程序从首次显示启动屏幕开始启动的时间?我希望确保启动屏幕显示一定的最短时间。

我建议在应用程序代理的
-[id应用程序:应用程序将使用选项完成启动:]
方法,并存储该值以供以后使用。

这会让人觉得你的应用程序响应性较差,通常是一种糟糕的用户体验。但从技术角度来看,在
uiapplicationelegate
上的每个委托方法中删除断点或
NSLog
s,以查看它们触发的顺序,并在时间分析器中运行应用程序以查看花费的时间


WWDC会议专门讨论如何缩短用户点击应用程序图标到应用程序完全启动并准备好与用户交互的时间。最好的用户体验来自于尽可能将这段时间设置为零。用户不喜欢看你的公司徽标,这是HIG禁止的。

为什么不使用计时器?因为我的代码直到发布图像消失后才会执行,所以我不知道它已经显示了多长时间。或者至少我假设是这样。事实上我并不确定。事实上你不应该。它违反了苹果iPhone人机界面指南(HIG)。阅读此文。就像99%的其他应用程序一样,我们正在使用启动屏幕显示徽标,因此它已经不符合HIG。我也可以在
main()
的开头就这样做。我很想知道这两个应用程序之间的运行时间。既然你问了,我将目前正在开发的应用程序的差异基准定为0.84秒(在禁用断点的调试器中运行时)。因此这很重要。
main()
看起来是目前为止最好的选择。这是一个巨大的数字。我原本预计它会在100毫秒左右。你在什么硬件上运行它?iPhone 5。但是,连接调试器确实会减慢速度,所以不要期望这表明实际的性能。我个人同意这一点,但这不是我的决定。我不打算做出决定延迟超过半秒。事实上,我问这个问题的原因是为了进一步减少延迟,考虑到发布图像已经显示了多长时间,所以我不需要为用户花费更长的时间。如果这是产品所有者提出的,最好的途径可能是考虑放弃这些在(和
main()
)中设置断点并保持它们之间的时间。如果您可以将平均启动时间设置为200ms,然后再延迟300ms,这会让产品所有者高兴吗?希望如此!我不喜欢人为地减慢启动速度的想法。