16

iOS アプリケーションの起動時間を短縮するように依頼されました。私はプラットフォーム/ツール全般に精通していますが、これまでアプリケーションの起動時間に注目したことはありませんでした。この問題を攻撃するための既知のパターンがあるかどうか疑問に思っていますか?

main() から完了までapplication:didFinishLaunchingWithOptions:(バックグラウンドの読み込みタスクを含む) にかかる時間を簡単に測定できることはわかっていますが、これを行うためのより標準化された方法があることを願っています。

どんな提案でも大歓迎です!

-M

4

2 に答える 2

15

WWDC 2012 セッション 235 より

コードの最初の行に開始点を設定しますmain.m

#import <UIKit/UIKit.h>

CFAbsoluteTime StartTime;

int main(int argc, char *argv[])
{
    StartTime = CFAbsoluteTimeGetCurrent();

    @autoreleasepool {
        ...

AppDelegateのどこかに終点を設定しますapplication:didFinishLaunchingWithOptions:

extern CFAbsoluteTime StartTime;
 ...
dispatch_async(dispatch_get_main_queue(), ^{
    NSLog(@"Launched in %f sec", CFAbsoluteTimeGetCurrent() - StartTime);
});
于 2014-08-06T11:36:04.350 に答える
1

あなたの方法は正しいもののように聞こえます(測定には CFAbsoluteTime を使用することをお勧めします)。

起動時間を短縮するのに役立つ可能性があることの 1 つは、アプリケーションの起動時に View Controller が nib から読み込まれないようにすることです。私が間違っていなければ、アプリが起動する前であっても、強制的にメモリに読み込まれます。代わりに、必要なときにビュー コントローラーを動的に割り当てて初期化します。Nibs に保存されているビュー コントローラーによってロードしたいビューを引き続き持つことができることに注意してください。IB の使用を停止する必要はありません。アプリデリゲートの静的アウトレットを設定するために IB を使用しないでください。

于 2011-09-17T16:17:23.027 に答える