作者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)
1F:推 Blueshiva:我怎麽直接想到的是丢到GCD中去排队... 02/14 11:47
2F:→ uranusjr:啊对耶 GCD 就有 serial 了... 02/14 12:17
3F:→ kiii210:昨天我也有想到...不过不会用..是dispatch_queue吗? 02/14 12:20
4F:推 johnlinvc:GCD 可能不太行。因为async 的function 会立刻return 02/15 12:45
5F:推 ksksBangBang:NSOperationQueue? 02/16 06:45