В моем приложении я использую метод 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");
}
, но его не называется в конце. Что здесь не так? Есть идеи? А также, если одновременно выполняются несколько очередей, как мы можем отличить, какая очередь завершена в конце?
Edit:
- (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 go]; , все же загрузка была выполнена. Итак, похоже, что в очереди нет никакого контроля. Есть идеи? – Mithun
Пожалуйста, добавьте остальную часть своего кода (как вы запустите очередь и т. Д.) На свой вопрос. Легче определить проблему, тогда – joern
Я обновил код, пожалуйста, проверьте – Mithun