我在下载文件时遇到问题。我有一个 90 MB 的 zip 文件,它正在填满我的 RAM 内存以减少数量,直到文件被下载。有人可以帮助我提供一些示例代码,以显示执行此操作而不会使我的 RAM 过载的更好方法吗?
谢谢。
代码:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
NSURL *url = [NSURL URLWithString:@"http://autoskola.1e29g6m.xip.io/mobileData/slike3.zip"];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:url options:0 error:&error];
if(!error){
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSString *zipPath = [path stringByAppendingPathComponent:@"slike3.zip"];
[data writeToFile:zipPath options:0 error:&error];
if(!error){
//unziping the files
ZipArchive *za = [[ZipArchive alloc] init];
if([za UnzipOpenFile:zipPath]){
BOOL ret = [za UnzipFileTo:path overWrite:YES];
if(NO == ret){} [za UnzipCloseFile];
}
}else{
NSLog(@"Error saving file %@", error);
}
}else{
NSLog(@"Error downloading zip file: %@", error);
}
});
最佳答案
您可能需要考虑调查 AFNetworking .它可能是访问互联网最常用的库。您可以使用它来下载文件并获取输出流并将数据写入文件。这将允许您将文件作为数据 block 而不是一次全部下载和写入。你会想看看 AFNetworking Docs有关下载文件的信息。您还需要查看 NSFileHandle 的文档有关如何将数据写入文件的信息。
关于ios - 将大文件下载到 iphone 会填满 ram 内存 - xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22715076/