ios - 将大文件下载到 iphone 会填满 ram 内存 - xcode

标签 ios iphone ram

我在下载文件时遇到问题。我有一个 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/

相关文章:

ios - 即使从图库或相机中选择新图像后,个人资料图像也不会更新

iphone - NSArray compontentsSeperatedByString 返回无法识别的选择器

arrays - Fortran:普通数组与存储相同数据量的对象所需的 RAM

ios - 如何在 JSQMessagesViewController 中显示消息日期

ios - 单元格或标题 View 高度的 UITableViewAutomaticDimension 导致 UITableView insertRowsAtIndexPaths() 崩溃

iphone - 将 Google GData 添加到 iPhone 的 xcodeproject

java - 大数组 - 内存不足错误

javascript - NodeJS 脚本中的注释是否可能会造成内存问题?

ios - 如果条件为 True,则执行 segue

iPhone iOS 如何通过长按将图像粘贴到 UIImageView 中