下载一个大文件到iphone填充ram内存- xcode



下载文件时遇到问题。我有一个90 MB的压缩文件,它正在填充我的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。它可能是访问互联网最常用的图书馆。您可以使用它来下载文件并获取输出流并将数据写入文件。这将允许您以数据块的形式下载和写入文件,而不是一次性全部下载和写入。您需要查看AFNetworking Docs以获取有关下载该文件的信息。你还需要查看NSFileHandle的文档,了解如何将数据写入文件。

最新更新