我正在尝试使用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委托错误也没有不叫“
答案 0 :(得分:0)
尝试使用
ashiRequest.delegate = nil;
[ashiRequest cancel];
这应该有用。
答案 1 :(得分:0)
我弄清楚出了什么问题。我使用Reachability来调用我的retrieveLatestFileMethod。如果Reachability仅在应用程序中使用一次,可能来自代表就可以了。但我有一些实例,所以它会调用相同的函数和下载。