5

所以+(id)dataWithContentsOfMappedFile:(NSString *)path自 iOS 5.0 以来显然已弃用。听起来我应该避免使用它,但是我应该使用什么来代替呢?

我使用 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);
4

1 回答 1

10

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

于 2012-09-27T14:30:53.210 回答