2

何百もの大きなファイルを含む可能性のあるパッケージを作成しているNSDocumentので、ドキュメントを開くときにすべてを読みたくありません。

検索に時間を費やしましたが、明確な答えが見つかりません。ほとんどの人は、すべてのデータをメモリにロードすると考えているようですが、ラッパーNSFileWrapperを呼び出すまでデータをロードしないことを示す人もいます。-regularFileContents(例については、NSFileWrapperがすべてをメモリにロードしますか?およびObjective-C / Cocoa:画像、作業メモリ、およびストレージのアップロードを参照してください。)

ドキュメントは完全に明確ではありませんが、のようなオプションはNSFileWrapperReadingImmediateNSFileWrapperReadingWithoutMapping常にすべてを読み取るとは限らないことを示唆しているようです。

NSFileWrapper置き換えられたサブラッパーのみを書き出すことで、増分保存をサポートするものを収集します。したがって、インクリメンタルロードもサポートしていると便利です。

決定的な答えはありますか?

4

1 に答える 1

2

NSFileWrapperオプションを指定しない限り、デフォルトで遅延ロードされますNSFileWrapperReadingImmediate。何かが実際にファイルを要求するまで、ファイルをメモリに読み込むことを回避します。

デバッグの補助としてのみ、以下を調べることにより、ファイルがまだロードされているかどうかを確認できます。

[wrapper valueForKey:@"_contents"];

NSDataファイルがディスクから読み取られると、入力されます。

于 2013-04-09T08:37:11.877 に答える