1

同じスレッド内で複数のコンテキストを使用する (または回避する) ためのルールを強調できる簡単な答えを探しています (私の場合はメインのコンテキスト)。

通常、Core Data では、アプリケーション全体で使用される単一のメイン コンテキストを設定します。次に、バックグラウンド作業を実行する必要がある場合は、実行するバックグラウンド操作ごとにコンテキストを作成します。

このようなアプローチは、ほとんどの場合有効です。Core Data はメモリを完璧に管理します。しかし、オブジェクト グラフの一部を (メモリ フットプリントを管理して) 明示的に削除することもできます。ここでは、 paramに- (void)refreshObject:(NSManagedObject *)object mergeChanges:(BOOL)flag渡すことに頼ることができます。NOただし、保留中の変更が失われる可能性があることに注意する必要があります。

さて、私の質問は次のとおりです。1 つのスレッド (メイン スレッド) 内で使用できるコンテキストの数を決定できる経験則はありますか? 私の考えは以下です。メイン コンテキスト (変更が保存される場所) と、表示目的でのみ使用され、オンデマンドで作成される追加のコンテキストを作成します。使い終わったら、 を送信しresetてメモリ全体をリサイクルすることができます。

何かアドバイス?新しい iOS 5 API に何らかの影響がある場合は、共有してください。

4

1 に答える 1

2

フレックス中毒、

メイン スレッド コンテキストは、スクラッチパッド作業とワーキング セットの管理に最も役立ちます。

Scratchpad の作業は、意図しないデータを処理するために MOC を使用しています-save:。または、元に戻すマネージャーの設定を行います。これはあなたが思っているよりも価値がないと思います。

UI の残りの部分で使用されていない一連のオブジェクトを UI に表示する場合は、新しい MOC を使用してメモリを管理し、ビューを閉じるときにそれを破棄できます。これにより、アプリの残りの部分には役に立たないアイテムをすべて破棄できます。これはメモリの管理に役立ちますが、iOS のメモリ警告に応答してツリーをトリミングする代わりにはなりません。

アンドリュー

于 2012-12-31T12:51:50.040 に答える