2012-09-27 25 views
5

Vì vậy, +(id)dataWithContentsOfMappedFile:(NSString *)path dường như không được chấp nhận kể từ iOS 5.0. Nghe có vẻ như tôi nên tránh sử dụng nó, nhưng sau đó tôi nên sử dụng cái gì?Thay thế cho dữ liệu không được dùng NSDataWithContentsOfMappedFile

Tôi đã sử dụng mmap để tạo các tệp ánh xạ bộ nhớ và nó hoạt động với iOS5, nhưng trong iOS6, đã xảy ra sự cố vì tôi gặp lỗi ngay khi tôi cố cập nhật hoặc đọc bộ đệm.

int fd = open(path, O_RDWR); 
    off_t offset = 0; 
    snapshotData = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset); 
    close(fd); 

Trả lời

10

Sử dụng +dataWithContentsOfFile:options:error:. Vượt qua NSDataReadingMappedIfSafe làm tùy chọn. Bạn cũng có thể sử dụng NSDataReadingMappedAlways thay vào đó, nhưng tôi khuyên bạn nên sử dụng trừ khi nó thực sự phải được ánh xạ. Nếu nó thực sự phải được ánh xạ, NSDataReadingMappedAlways vẫn chỉ là một gợi ý, do đó, không có lời hứa. Để có được một lời hứa, bạn cần tự viết nó, as discussed at CIMG.

+0

Tôi sẽ cố gắng triển khai như được đề xuất tại CIMG. Cảm ơn con trỏ. – mprivat

Các vấn đề liên quan