2012-09-27 40 views
5

因此+(id)dataWithContentsOfMappedFile:(NSString *)path自iOS 5.0以来显然不推荐使用。这听起来像我应该避免使用它,但那么我应该使用什么呢?替代NSData弃用dataWithContentsOfMappedFile

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

回答

10

使用+dataWithContentsOfFile:options:error:。作为选项通过NSDataReadingMappedIfSafe。您也可以使用NSDataReadingMappedAlways,但我建议前者除非真的必须映射。如果它真的必须映射,NSDataReadingMappedAlways仍然只是一个提示,所以没有任何承诺。为了得到承诺,你需要自己写下,as discussed at CIMG

+0

我会尽量按CIMG的建议实施。感谢指针。 – mprivat

相关问题