NSData的替代品已弃用dataWithContentsOfMappedFile

时间:2012-09-27 14:23:29

标签: objective-c ios mmap

因此,自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);

1 个答案:

答案 0 :(得分:10)

使用+dataWithContentsOfFile:options:error:。通过NSDataReadingMappedIfSafe作为选项。您也可以使用NSDataReadingMappedAlways代替,但我建议使用前者,除非确实需要映射。如果确实必须映射,NSDataReadingMappedAlways仍然只是一个提示,所以没有承诺。要获得承诺,您需要自己编写,as discussed at CIMG