4

この cocoanetics の記事 ( http://www.cocoanetics.com/2012/07/multi-context-coredata/ ) で説明されている 3 層のコア データ システムを再作成しようとしています。私が直面している問題は、独自のバックグラウンド スレッドでプライベート MOC を作成することです。私は、マルチスレッドとそれを目的の c でどのように行うべきかについてあまり経験がありません。私は記事を読んで、このアプローチを正しく実装する方法を理解しようとしましたが、最終的に自分が何をしているのかわからないという事実を認めました。

このアプローチを作成するには、NSThread を作成して管理する必要がありますか? または、私が理解していないより簡単な方法はありますか?

4

2 に答える 2

5

バックグラウンドで Core Data 操作を実行する最も簡単な方法は、 の管理対象オブジェクト コンテキストを作成することNSPrivateQueueConcurrencyTypeです。このタイプの MOC は、プライベート キューを作成および管理します。performBlockorを使用performBlockAndWaitしてプライベート MOC で操作を実行すると、適切なキューが使用されます。

詳細と例については、OS X v10.7 および iOS 5.0 のCore Data リリース ノートの管理対象オブジェクト コンテキストの同時実行サポートを参照してください。

WWDC 2011 セッション 303「iOS のコア データの新機能」のビデオまたはスライドを見ることをお勧めします。コア データの同時実行性が説明されています。

于 2012-11-26T23:00:11.650 に答える
-3

スレッドの管理は、iOS では非常に基本的なものです

バックグラウンドで何かを実行するには、次のようにします。

- (void)someMethod {
    // method is called on main thread normally

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        .... // here things are run in background
    });
}

メイン スレッドに戻るには、次のようにします。

- (void)someOtherMethod {
    // method is called on background thread

    dispatch_async(dispatch_get_main_queue(), ^{
        ... // here things are on main thread again
    });
}
于 2012-11-26T19:37:42.643 に答える