gpt4 book ai didi

ios - NSFileWrapper 是否将所有内容加载到内存中?

转载 作者:可可西里 更新时间:2023-11-01 05:02:26 25 4
gpt4 key购买 nike

假设我有一个 NSFileWrapper 目录。该目录由几级目录和文件组成。有些文件很大。这些文件是全部加载到内存中,还是延迟加载?

如果它们被加载到内存中,是否有任何替代 NSFileWrapper 的替代品具有类似的功能,不会将文件加载到内存中?我可以挂接到 UIDocument 中的东西吗?


这是基于文档的应用程序,它使用与 iCloud 同步的 UIDocument。文档中可以嵌入图像和视频。每个图像/视频都有一个显示在 HTML 文档中的预览图像(缩略图)。全尺寸图像或视频不应加载到内存中,而应按需加载。

我还需要一种方法来添加资源而不将其加载到内存中。像“initWithAsset:(ALAsset *)”这样的东西是理想的。

最佳答案

我不久前制作了一个生成视频的应用程序。然后使用 UIDocument 子类将该视频保存为特定文件格式。

使应用程序在执行 contentsForType:error: 时不会耗尽内存的唯一方法是将视频输出到 tmp 目录中的文件,并使用视频的 url 初始化 filewrapper使用 NSFileWrapperReadingWithoutMapping-option 来防止它加载视频到内存并只复制文件。

- (id)contentsForType:(NSString *)typeName error:(NSError **)outError {
if (self.fileWrapper == nil) {
self.fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
}

if (self.videoURL != nil) {

NSError *fileReadError;
NSFileWrapper *videoFileWrapper = [[NSFileWrapper alloc] initWithURL:self.videoURL options:NSFileWrapperReadingWithoutMapping error:&fileReadError];

if(fileReadError){
NSLog(@"File read error: %@", [fileReadError localizedDescription]);
}else {
[videoFileWrapper setPreferredFilename:@"video.mov"];
[self.fileWrapper addFileWrapper:videoFileWrapper];
}

}
//...
}

关于ios - NSFileWrapper 是否将所有内容加载到内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com