作者uranusjr (←這人是超級笨蛋)
看板MacDev
標題Re: [問題] 如何批次執行一個method?
時間Thu Feb 14 05:52:04 2013
※ 引述《kiii210 (Johnny.T)》之銘言:
: 不是三個圖檔"同步"下載, 而是下載完1換下載2,
: 下載完2換下載3, 結束.
: (類似下載工具只限制一次只能下載一個檔案, 而排隊中的檔案有3個,
: 所以一次只能下載一個, 下載完自動下載另一個)
: [SDWebImageDownloader.sharedDownloader
: downloadImageWithURL:img_largeURL options:0
: progress:^(NSUInteger receivedSize, long long expectedSize) {
: /*Block 1 */
: }
: completed:^(UIImage *image, NSData *data , NSError *error, BOOL finished) {
: /* Block 2 */
: if ( finished && image ) {
: }}];
看起來可以遞迴一下
...
NSMutableArray *URLs
...
- (void)consumeURLs
{
NSURL *URL = [URLs lastObject];
[URLs removeLasObject];
if (!URL)
return; // All done
id dlr = [SDWebImageDownloader sharedDownloader];
[dlr downloadImageWithURL:URL
options:0
progress:^(NSUInteger rsz, long long esz) {
// Whatever
}
completed:^(UIImage *i, NSData *d , NSError *e, BOOL f) {
[self consumeURLs];
}];
}
以上是直接打字的, 可能有小錯誤不過大致上概念是這樣
至於發生錯誤的時候要怎麼處理(要重傳還是怎樣)就看你自己了
--
"問おう、貴方が私のマスターか?"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.81.146
※ 編輯: uranusjr 來自: 114.32.81.146 (02/14 06:00)
推 Blueshiva:我怎麼直接想到的是丟到GCD中去排隊... 02/14 11:47
→ uranusjr:啊對耶 GCD 就有 serial 了... 02/14 12:17
→ kiii210:昨天我也有想到...不過不會用..是dispatch_queue嗎? 02/14 12:20
推 johnlinvc:GCD 可能不太行。因為async 的function 會立刻return 02/15 12:45
推 ksksBangBang:NSOperationQueue? 02/16 06:45