下載文件時出現問題。我有一個具有90 MB的zip文件,它將我的RAM內存填充到hudge數量,直到文件被下載。有人可以幫助我一些示例代碼,顯示任何更好的方式來做到這一點,而不是超載我的內存?將一個大文件下載到iphone會填滿內存 - xcode
謝謝。
代碼:
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);
}
});
發表一些代碼,沒有它我們不能看到發生了什麼。 – rckoenes
對不起,我粘貼了我的代碼。 – Ferenc
你的問題是,試圖保存整個下載內存,你不應該使用任何'* WithContentsOfURL:'互聯網URL。使用'URLConnection'或'URLSession'。 Beter現在仍然使用像Aaron Heyman建議的那樣的AFNetworking。 – rckoenes