1

複数の VC が異なるフェッチ制限を使用してデータベースからデータをフェッチする場合、NSManagedObjects はメモリ内でどのように管理されますか。

たとえば、ある VC は名前に基づいてフェッチし、テーブルビューに名前を表示するだけでよいため、フェッチされた NSManagedObjects からの名前データのみをメモリに保持し、オブジェクトの残りの部分は保持しません。

これにより、選択したデータをメモリに保持できます。一度に複数の VC が同じデータを保持している場合、メモリはどのように使用されますか? 参照ごとにこのデータのコピーがありますか、それとも NSManagedObjects のバッキング データは Core-Data の単一のエントリですか?

その場合、Core-Data はこれらの単一インスタンスのオンデマンド読み取りに仮想メモリ マッピングを使用しますか、それとも実際のデータはコピーとしてメモリにロードされますか?

4

1 に答える 1

1

オブジェクトのコピーはありません。同じストア/コンテキストを使用している限り、コピーは1つだけです(一意化と呼ばれる機能)。コアデータのメモリフットプリントを削減するのに役立つフォールティングと呼ばれるものもあります。
障害とは、初期化されていないiVarsを持つ管理対象オブジェクトのインスタンスを意味します。障害は、さまざまな方法でトリガー(つまり、ivarsが初期化)される可能性があります。(人間関係で特に役立ちます)。詳細については、こちらをご覧ください:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFaultingUniquing.html

しかし、私の理解によれば、管理対象オブジェクトの1つのプロパティ(名前データなど)をメモリに保持することはできません。オブジェクト全体がメモリに保存されます。

于 2013-03-05T18:41:03.557 に答える