微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 读取本地文件时应该使用哪些NSDataReadingOptions?

使用NSData(contentsOfURL:options :)读取本地文件时,哪一个是合适的读取选项?

还有一个没有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

Apple Documentation : dataWithContentsOfFile

Apple Documentation : dataWithContentsOfFile:options:error

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐