2016-04-23 16 views

Antwort

3

Wenn Sie die Methode:

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

Die entsprechenden Optionen hängt davon ab, was Sie vorhaben, mit den Daten zu tun; wie in Apple-Dokumentation angegeben:

  • NSDataReadingUncached: Ein Hinweis, die Datei angibt, sollte nicht in dem Dateisystem-Cache-Speicher gespeichert werden. (Für einmal gelesene und verworfene Daten kann diese Option die Leistung verbessern.)
  • NSDataReadingMappedIfSafe: Ein Hinweis, der die Datei angibt, sollte, wenn möglich und sicher, in den virtuellen Speicher übertragen werden.
  • NSDataReadingMappedAlways: Hinweis, um die Datei wenn möglich zu mappen. (Dies hat Vorrang vor NSDataReadingMappedIfSafe wenn beide angegeben.)

Einige Erklärungen über mappedFiles: sollte nur verwendet werden, wenn die Datei garantiert für die Dauer des Datenobjekts Existenz existieren. Es ist im Allgemeinen sicherer, die Methode dataWithContentsOfFile: zu verwenden.

Bei Verwendung von mappedFiles-Optionen wird davon ausgegangen, dass zugeordnete Dateien vom zugrunde liegenden Betriebssystem zur Verfügung stehen. Eine zugeordnete Datei verwendet virtuelle Speichertechniken, um zu vermeiden, dass Seiten der Datei in den Speicher kopiert werden, bis sie tatsächlich benötigt werden.

Die andere Methode:

NSData dataWithContentsOfFile:(NSString *)path; 

ist das Äquivalent von dataWithContentsOfFile:options:error ohne angegebenen Optionen.

Fazit

Wenn wir dies zusammen, sollten Sie verwenden:

  • dataWithContentsOfFile:, wenn Sie für Ihre Daten keine besonderen Bedürfnisse haben, oder die Speichernutzung Probleme. Es ist die sicherere Wahl.
  • dataWithContentsOfFile:options:error mit NSDataReadingUncached Option, wenn Sie die Daten nur einmal
  • dataWithContentsOfFile:options:error mit NSDataReadingMappedIfSafe Option verwenden, wenn Sie nicht sofort die gesamte Datei geladen werden sollen, und Sie sind sicher, dass die Datei während der gesamten Lebensdauer des NSData existiert Objekt.
  • dataWithContentsOfFile:options:error mit NSDataReadingMappedAlways Option - das gleiche wie oben, aber weniger Schutzmaßnahmen.

Quellen:

Apple Documentation : NSReadingOptions

Apple Documentation : dataWithContentsOfFile

Apple Documentation : dataWithContentsOfFile:options:error