0

私の Mac アプリは、接続してデータをプルするのに約 10 秒かかるリモート データベースに接続します。この時間は、フレームワークの初期化やネットワークの遅延などにより短縮できません。

アプリの最初の起動時からアプリの準備が整うまでスプラッシュ画面を表示したいのです。

メソッドを試してみapplicationWillFinishLaunching:(NSNotification *)notificationましたが、アプリが起動するまでスプラッシュ画面が表示されません。これは、AppDelegate が最後に作成されたオブジェクトのように見え、アプリ全体が「起動を完了する」前にアプリ コントローラーが完全に初期化されるためです。これが遅延の場所です。

ドック タイルが跳ね始めたらすぐにこのウィンドウを呼び出す方法はありますか?

最適化のために撃墜されることはわかっていますが、このプロセスをスピードアップするためのこれ以上の手順はありません.

4

1 に答える 1

3

アプリのデリゲートが先に進むことができるように、時間のかかるタスクを GCD と非同期でバックグラウンド スレッドにディスパッチすることができます。

 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

    dispatch_async(queue, ^{
        // time consuming task
    });

アップデート:

UI の変更を伴う場合、dispatch_get_main_queue() を呼び出して、面倒なタスクをバックグラウンド スレッドではなくメイン スレッドで実行できます。

于 2013-06-06T13:16:11.450 に答える