在 iOS 上,我们的应用程序正在下载一个大约 400MB 的 zip 文件。下载文件时,我们遇到了间歇性崩溃。
目前我正在使用 [NSFileHandle writeData:] 来写入数据,而不是存储在内存中。但我想知道操作系统是否以某种方式将其存储在内存中?
NSOutputStream 会是下载大文件的更好解决方案吗?或者可能是标准的unix文件描述符?
我们的文件句柄是这样设置的:
NSFileManager * fileManager = [NSFileManager defaultManager];
[fileManager createFileAtPath:tmpFilePath.path contents:nil attributes:nil];
_zipFile = [NSFileHandle fileHandleForWritingAtPath:tmpFilePath.path];
目前我的 NSURLConnection 委托方法如下所示:
- (void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) data {
[_zipFile writeData:data];
}
因此,来自请求的数据不会存储或附加到任何其他数据对象。这不应该只是写入磁盘而不影响内存吗?
谢谢