1

30 個の画像を含む NSDictionary を保存しようとしています。ViewController の viewDidDisappear に辞書を保存するメソッドを呼び出しています。問題は、保存中に UI がフリーズすることです。1秒未満の小さなラグですが、少し面倒です。より流動的にするためのアイデアはありますか?辞書を非同期で、おそらくブロックで保存する必要があるかもしれませんが、それらの使用方法がよくわかりません。

これが私の節約方法と取得方法です:

+ (NSDictionary*)getProgramImages{
    NSString *path = [DataManager getProgramImagesFileDirectory];
    NSDictionary *programImages = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    return programImages;
}

+ (void)saveProgramImages:(NSDictionary*)programImages{
    NSString *path = [DataManager getProgramImagesFileDirectory];

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:programImages];
    [data writeToFile:path options:NSDataWritingAtomic error:nil];
}

助けてくれてどうもありがとう!

ボリス

4

3 に答える 3

2

Grand Central Dispatch を使用してバックグラウンド スレッドでそのコードを実行する以下のコードを使用して、関数呼び出しをラップすることができます。現時点では、それで問題が解決するかどうかをテストできません。

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // call that function inside here
});
于 2014-06-13T02:15:31.973 に答える
1

あなたの問題を解決する方法はたくさんあります。この 同時実行プログラミングを読む必要があります

グランドセントラルディスパッチは良い選択です.

于 2014-06-13T02:20:00.513 に答える
1

dispatch_asyncメインスレッドで実行されているコードをスムーズにするのに役立つかもしれません。

 dispatch_async(dispatch_get_main_queue(),^{
        //your code goes here
    });
于 2014-06-13T02:15:17.363 に答える