ASIHTTPRequest Асинхронная загрузка не отменяется - PullRequest
0 голосов
/ 30 сентября 2011

Я пытаюсь отменить асинхронную загрузку с помощью ASIHTTPRequest без радости.Я загружаю фильм на диск при появлении ViewController.То, что я хочу, - когда пользователь нажимает близко, чтобы закрыть контроллер представления, я хочу отменить загрузку.Вот код, который у меня пока есть:

Оформление запроса:

-(void)retrieveLatestFile{

NSURL *url = [NSURL URLWithString:[appDelegate.urlToLoad stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

ashiRequest = [[ASIHTTPRequest requestWithURL:url] retain];
[ashiRequest setUsername:@"Appidae"];
[ashiRequest setPassword:@"Dubstance1"];
[ashiRequest setDelegate:self];
[ashiRequest startAsynchronous];
[ashiRequest setDownloadProgressDelegate:progressView];
NSLog(@"Value: %f", [progressView progress]);
if ([progressView progress]==1) {
    [self hideInfoPane];
}
//NSLog(@"Max: %f, Value: %f", [myProgressIndicator maxValue],[myProgressIndicator doubleValue]);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *tempPath = [NSString stringWithFormat:@"%@/download/%@/%@", documentsDirectory, appDelegate.languageFolder,appDelegate.filename];


NSLog(@"Path: %@", tempPath);

[ashiRequest setDownloadDestinationPath:tempPath];
}

Отмена загрузки:

- (IBAction)closeDocDisplay:(id)sender {
// Cancels an asynchronous request


[ashiRequest clearDelegatesAndCancel];


[self dismissModalViewControllerAnimated:YES];
}

Все работает, загрузка в порядкеи фильм воспроизводится правильно, но когда я закрываю View Controller, запрос не отменяется, и мой файл все еще загружается (индикатор активности сети вращается в строке состояния. Даже ошибка делегата ASIHTTP не вызывается

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Я понял, что случилось.Я использовал Reachability для вызова моего retrieveLatestFileMethod.Это хорошо, если Reachability используется только один раз в приложении, может быть от делегата.Но у меня было несколько экземпляров, поэтому он вызывал те же функции и загружал.

0 голосов
/ 30 сентября 2011

Попробуйте использовать

ashiRequest.delegate = nil; 
[ashiRequest cancel];

Это должно работать.

...