首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSFileWrapper是否支持延迟加载?

NSFileWrapper是否支持延迟加载?
EN

Stack Overflow用户
提问于 2013-03-25 23:27:28
回答 1查看 650关注 0票数 2

我正在创建一个可能包含成百上千个大文件的NSDocument包,所以我不想在打开文档时将其全部读取。

我花了一些时间寻找,但我找不到一个明确的答案。大多数人似乎认为NSFileWrapper会将所有数据加载到内存中,但也有人指出,直到您在包装器上调用-regularFileContents时,它才会加载数据。(有关示例,请参阅Does NSFileWrapper load everything into memory?Objective-C / Cocoa: Uploading Images, Working Memory, And Storage。)

文档并不完全清楚,但像NSFileWrapperReadingImmediateNSFileWrapperReadingWithoutMapping这样的选项似乎表明,它并不总是读取所有内容。

我知道NSFileWrapper支持增量保存,只写出已经被替换的子包装器。因此,如果它也支持增量加载就更好了。

有一个明确的答案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 16:37:12

除非您指定了NSFileWrapperReadingImmediate选项,否则默认情况下NSFileWrapper会延迟加载。它将避免将文件读取到内存中,直到有实际请求。

作为一个仅用于调试的,您可以通过检查以下内容来查看文件是否已经加载:

代码语言:javascript
复制
[wrapper valueForKey:@"_contents"];

一旦从磁盘读取文件,它就会被填充为NSData

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15618628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档