0

高效下載大量圖片(1500+)我正在構建一款應用程序,可根據用戶請求下載大量圖片,有時會下載1500-5000張圖片。爲此,我正在使用AFNetworking 2。起初,我只是遍歷我的所有網址,然後爲每個網址提出請求。通過AFNetworking 2

for (NSString *url in urls) { 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; 
    [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     completion(responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     failure(error); 
    }]; 
    [requestOperation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { 
     double percentDone = (double)totalBytesRead/(double)totalBytesExpectedToRead; 
     progress(percentDone); 
    }]; 
    [requestOperation start]; 
} 

但是,之後我得到了約900下載/請求,我將開始得到以下錯誤:

The request timed out 

我假設直接從AFNetworking此錯誤來了。

什麼是最好和最有效的方式來做這樣的大量的下載請求沒有超時?我是否應該使用dispatch_group將請求批爲outlined here

或者,我應該使用一次下載一個圖像的遞歸方法,並且只有在第一個圖像完成後纔開始下一個請求?

回答

1

試試這個

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
[request setTimeoutInterval:600]; /* 10 minutes */ 

但是,這將是最好的解決辦法,如果你只需要下載圖片的檔案,然後解壓。

+0

在這種情況下,圖像存檔是不可能的。 – 2015-04-04 21:44:11

+0

設置如此長的超時間隔是否安全? – 2015-04-04 21:44:29

+1

@NicHubbard是的,它很安全。默認情況下,AFNetworking具有60秒的超時時間間隔。 – BioMax 2015-04-04 22:23:22