1
在我的应用程序中,我使用ASINetworkQueue方法下载文件。我有n个按钮,每个按钮点击不同的队列将创建多个请求,并开始异步下载(多次下载)。它工作正常,但我无法跟踪每个队列何时完成。我都用过,ASINetworkQueue委托方法不叫
[self.myQueue cancelAllOperations];
[self.myQueue setDownloadProgressDelegate:currentProgress];
[self.myQueue setDelegate:self];
[self.myQueue setShowAccurateProgress:YES];
[self.myQueue setRequestDidFinishSelector:@selector(requestFinished:)];
[self.myQueue setQueueDidFinishSelector:@selector(queueComplete:)];
,并添加请求作为,
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:str]];
[request setDownloadProgressDelegate:currentProgress];
[request setShowAccurateProgress:YES];
[request setDelegate:self];
[request shouldContinueWhenAppEntersBackground];
[request allowResumeForFileDownloads];
[request startAsynchronous];
[self.myQueue addOperation:request];
和最后[self.myQueue go];
和委托方法是
- (void)queueComplete:(ASINetworkQueue *)queue
{
NSLog(@"Queue completed");
}
但最终它不叫。这里出了什么问题?任何想法? 而且,如果有多个队列同时执行,我们如何区分哪个队列在最后完成?
编辑:
- (void)download{
UIImageView *image = (UIImageView *)[mainView viewWithTag:selectedTag];
for (UIProgressView *currentProgress in [image subviews]) {
if ([currentProgress isKindOfClass:[UIProgressView class]]) {
NSLog(@"Prog tag: %d",currentProgress.tag);
if(currentProgress)
{
currentProgress.progress = 0.0;
[[self myQueue] cancelAllOperations];
[self setNetworkQueue:[ASINetworkQueue queue]];
[[self myQueue] setDownloadProgressDelegate:currentProgress];
[[self myQueue] setDelegate:self];
[[self myQueue] setShowAccurateProgress:YES];
ASIHTTPRequest *request;
[myQueue setQueueDidFinishSelector:@selector(queueComplete:)];
for (int h = 0; h < [urlArray count]; h++) {
request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[urlArray objectAtIndex:h]]];
[[self myQueue] addOperation:request];
}
[[self myQueue] go];
}
}
}
}
我试图,通过隐藏[请求startAsynchronous] ;,然后不进行下载。然后我隐藏了[request startAsynchronous];并隐藏[self.myQueue去]; ,仍然下载完成。所以,这看起来像队列没有任何控制。任何想法? – Mithun
请将您的其他代码(如何初始化队列等)添加到您的问题中。这很容易找出问题,然后 – joern
我已经更新了代码,请检查 – Mithun