使用NSOperationQueue和ASIHTTPRequest获取每次下载的多个下载进度更新

时间:2011-12-04 20:17:13

标签: iphone objective-c ipad asihttprequest nsoperationqueue

iam用于通过ASIHTTPRequest将多个文件下载到操作队列...

    NSInvocationOperation *operation =[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(DownloadFile:) object:url];
.
.
.

-(void)DownloadFile:(NSURL)url{
      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
        [request setDownloadProgressDelegate:self];
        [request setDidFailSelector:@selector(requestWentWrong:)];
        [request setDidFinishSelector:@selector(requestFinished:)];
        [request setDelegate:self];
        [request startSynchronous];
}

- (void)setProgress:(float)progress{    
    NSLog(@"Current progress %f :",progress);

}

进展正常但我不知道从哪个URL或从哪个操作.. 我想知道如何单独获取每个URL的每个下载进度... 以及我如何取消每一个不取消所有操作。 感谢

2 个答案:

答案 0 :(得分:2)

首先回答您的问题:如何为每次下载创建一个“委托”对象?然后很明显每次下载的下载进度如何,取消也很容易。但是代码会更复杂。

因此我有另一个建议:author of ASIHTTPRequest library has stopped developing the library,因此您可能切换到其他内容。他的建议是AFNetworking,但很多人现在推荐MKNetworkKit。它似乎有很好的队列处理。

答案 1 :(得分:0)

请注意委托消息的签名:每个消息都带有一个参数。该参数是向您发送消息的请求:请求在向您发送委托消息时,将其自身包含在参数中,以便您知道哪个请求已经到了那么远。