Re: [問題] 如何批次執行一個method?

看板MacDev作者 (←這人是超級笨蛋)時間11年前 (2013/02/14 05:52), 編輯推噓3(302)
留言5則, 5人參與, 最新討論串2/3 (看更多)
※ 引述《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)

02/14 11:47, , 1F
我怎麼直接想到的是丟到GCD中去排隊...
02/14 11:47, 1F

02/14 12:17, , 2F
啊對耶 GCD 就有 serial 了...
02/14 12:17, 2F

02/14 12:20, , 3F
昨天我也有想到...不過不會用..是dispatch_queue嗎?
02/14 12:20, 3F

02/15 12:45, , 4F
GCD 可能不太行。因為async 的function 會立刻return
02/15 12:45, 4F

02/16 06:45, , 5F
NSOperationQueue?
02/16 06:45, 5F
文章代碼(AID): #1H70i6y1 (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1H70i6y1 (MacDev)