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