2016-04-23 22 views
3

NSData(contentsOfURL:options:)でローカルファイルを読むとき、どちらが適切な読み取りオプションですか?ローカルファイルを読み込むときに使用するNSDataReadingOptionsはどれですか?

NSData(contentsOfURL:)もあり、NSDataReadingOptionsはありません。どの読み込みオプションがデフォルトで使用されますか?

Apple docsを参考にしてください。あなたがこの方法を使用する場合

答えて

3

NSData dataWithContentsOfFile:(NSString *)path 
         options:(NSDataReadingOptions)readOptionsMask 
         error:(NSError * _Nullable *)errorPtr; 

適切なオプションを使用すると、データをどうする予定かに依存します。 Appleドキュメントに記載されているように:

  • NSDataReadingUncached:ファイルシステムのキャッシュにファイルを保存しないことを示すヒント。
  • NSDataReadingMappedIfSafe:可能で安全な場合、ファイルを仮想メモリにマップする必要があることを示すヒント。
  • NSDataReadingMappedAlways:できるだけファイルをマップすることを推奨します。 (両方が指定されている場合、これはNSDataReadingMappedIfSafeよりも優先されます。)

mappedFilesに関するいくつかの説明は:ファイルは、データオブジェクトの存在の持続時間の間に存在することが保証されている場合にのみ使用してください。一般的にdataWithContentsOfFile:メソッドを使用する方が安全です。

mappedFilesオプションを使用する場合、このメソッドは、マップされたファイルが基礎となるオペレーティングシステムから利用可能であるとみなします。マップされたファイルは仮想メモリ技術を使用して、ファイルのページを実際に必要になるまでメモリにコピーしないようにします。

他の方法:

NSData dataWithContentsOfFile:(NSString *)path; 

は、与えられたオプションなしdataWithContentsOfFile:options:errorのと同等です。私たちは一緒にこれを置く場合

結論

、あなたが使用する必要があります。

  • dataWithContentsOfFile:あなたのデータ、またはメモリ使用量の問題を特定のニーズを持っていない場合。より安全な選択です。
  • NSDataReadingUncachedオプション付きdataWithContentsOfFile:options:errorあなたはすぐに、ファイル全体をロードしたくない場合にのみ
  • dataWithContentsOfFile:options:error一度NSDataReadingMappedIfSafeオプションでデータを使用する場合、あなたは、ファイルの意志がNSDataの全体の寿命の間に存在することを確認していますオブジェクト。
  • dataWithContentsOfFile:options:errorNSDataReadingMappedAlwaysオプション - 上記と同じですが、安全対策がありません。

出典:

Apple Documentation : NSReadingOptions

Apple Documentation : dataWithContentsOfFile

Apple Documentation : dataWithContentsOfFile:options:error

関連する問題