Если вам нужен произвольный доступ к содержимому файла способом, подобным загрузке его через NSData, но без фактического чтения всего в память, вы можете использовать отображение памяти. Это означает, что файл на диске будет рассматриваться как раздел виртуальной памяти и будет выгружаться и выгружаться, как обычная виртуальная память.
NSError * error = nil;
NSData * theData = [NSData dataWithContentsOfFile: thePath
options: NSMappedRead
error: &error];
Если вам не нужна информация об ошибках файловой системы, вы можете просто использовать:
NSData * theData = [NSData dataWithContentsOfMappedFile: thePath];
Тогда вы просто использовали бы метод -getBytes:range:
NSData для извлечения определенных фрагментов данных, и только соответствующие части файла фактически будут считываться из постоянного хранилища; они также будут иметь право быть выгруженными тоже.