因此,自iOS 5.0以来,+(id)dataWithContentsOfMappedFile:(NSString *)path显然已被弃用。这对我来说听起来像我应该避免使用它,但那么我应该使用什么呢?
我使用的是mmap来创建内存映射文件,它适用于iOS5,但是在iOS6中,出现问题是因为我在尝试更新或读取缓冲区时出现错误。
int fd = open(path, O_RDWR);
off_t offset = 0;
snapshotData = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset);
close(fd);
答案 0 :(得分:10)
使用+dataWithContentsOfFile:options:error:
。通过NSDataReadingMappedIfSafe
作为选项。您也可以使用NSDataReadingMappedAlways
代替,但我建议使用前者,除非确实需要映射。如果确实必须映射,NSDataReadingMappedAlways
仍然只是一个提示,所以没有承诺。要获得承诺,您需要自己编写,as discussed at CIMG。