3

iOS 5 Core Data の新しい API に徐々に移行しており、NSConfinementConcurrencyType.

アップルのドキュメントから

監禁 (NSConfinementConcurrencyType)。これがデフォルトです。作成したスレッド以外のスレッドではコンテキストが使用されないことを約束します。(これは、以前のリリースで使用したものとまったく同じスレッド要件です。)

このコンテキストでのデフォルトの意味は、私には明らかではありません。それは本当にどういう意味ですか?

通常、CD で非常に長いインポート操作を実行する必要がある場合は、新しいクラスをセットアップし、NSOperation独自のコンテキストを作成します。

- (void)main
{
    NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];

    // other code here...
}

これで、親コンテキストを利用して、次のことができます。

- (void)main
{
    NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
    [moc setParentContext:[self masterMoc]];

    // other code here...
}

と言いましたが、どうNSConfinementConcurrencyTypeですか?典型的な使用例は何ですか?

4

1 に答える 1

4

「デフォルト」では、Apple は、これが Core Data MOC が常に機能する標準的な方法であることを意味します。MOC は、それが使用されるスレッドで作成する必要があります。上記のコードでは、歴史的に有効な標準的な MOC 使用パターンに従っています。他のスタイルの MOC は、独自のバックグラウンド キューを作成および管理するか、メイン キューにバインドします。これにより、物事をいくらか単純化できます。か否か。主に、MOC へのブロック指向のインターフェイスです。あるとうれしいこともあります。(ブロックは新しいホットな話題ですが、純粋な善ではありません。私は、怠惰なプログラマーによって書かれたブロック指向のコードを見てきました。彼らはメソッドにあまりにも多くの複雑さを残しています。そのようなコードのメンテナンスは、微妙な相互作用で非常に困難になる可能性があります。 )

親コンテキストの考え方は、スレッドの制限の考え方と直交しています。親コンテキストは、MOC に必要なほとんどのパラメーターをすばやく関連付ける 1 つの方法です。(Apple は、MOC 間で実際に何が伝えられているのか不明です。また、マージ ポリシーの問題についても議論していません。) それでも、MOC 間の通知を把握する必要があると思います。

私が提案するなら、これらのことを考えすぎないでください. Lion/iOSv5 の Core Data への変更はかなり控えめでした。

于 2012-06-06T13:26:15.503 に答える