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