还有一个没有NSDataReadingOptions的NSData(contentsOfURL :).默认使用哪种阅读选项?
供Apple docs参考.
解决方法
NSData dataWithContentsOfFile:(Nsstring *)path options:(NSDataReadingOptions)readOptionsMask error:(NSError * _Nullable *)errorPtr;
适当的选项取决于您打算如何处理数据;如Apple文档中所述:
> NSDataReadingUncached:指示文件不应存储在文件系统缓存中的提示. (对于一次读取和丢弃的数据,此选项可以提高性能.)
> NSDataReadingMappedIfSafe:指示文件应该映射到虚拟内存的提示,如果可能且安全.
> NSDataReadingMappedAlways:如果可能,提示将文件映射到. (如果两者都给出,则优先于NSDataReadingMappedIfSafe.)
有关mappedFiles的一些解释:只有在数据对象存在的时间内保证文件存在时才应使用.使用dataWithContentsOfFile:方法通常更安全.
使用mappedFiles选项时,该方法假定映射文件可从底层操作系统获得.映射文件使用虚拟内存技术来避免将文件页面复制到内存中,直到实际需要它们为止.
另一种方法:
NSData dataWithContentsOfFile:(Nsstring *)path;
相当于dataWithContentsOfFile:options:错误,没有给出选项.
结论
如果我们把它放在一起,你应该使用:
> dataWithContentsOfFile:如果您对数据没有特殊需求,或者内存使用问题.这是更安全的选择.
> dataWithContentsOfFile:options:NSDataReadingUncached选项错误,如果您只使用一次数据
> dataWithContentsOfFile:options:NSDataReadingMappedIfSafe选项出错,如果您不想立即加载整个文件,并且您确定该文件在NSData对象的整个生命周期内都存在.
> dataWithContentsOfFile:options:NSDataReadingMappedAlways选项的错误 – 与上面相同,但安全措施较少.
资料来源:
Apple Documentation : NSReadingOptions
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。