我有两个视图控制器控制器 A 和控制器 B
在控制器 A 中,我有一个按钮来显示视图控制器 B。
在控制器 B 中,我有一个按钮下载(从下面的代码开始下载)和一个后退按钮(关闭视图控制器 B 以返回 A)
现在我希望每当我从控制器 B 回到控制器 A,然后再次从控制器 A 回到控制器 B,所有挂起的下载任务都被取消。
我尝试添加代码,在视图中加载
[dataTask suspend];
[dataTask cancel];
但除此之外,还会收到当前正在运行的下载字节
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
我正在使用以下代码下载多个文件
@property (nonatomic, retain) NSMutableData *dataToDownload;
@property (nonatomic) float downloadSize;
@property (nonatomic, retain)NSURLSessionDownloadTask *dataTask;
- (void)viewDidLoad {
[super viewDidLoad];
for(int i=0;i<[urlarray count];i++)
{
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];
NSURL *url = [NSURL URLWithString: [urlarray objectAtIndex:i]];
dataTask = [defaultSession downloadTaskWithURL: url];
[dataTask resume];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler {
completionHandler(NSURLSessionResponseAllow);
progressBar.progress=0.0f;
_downloadSize=[response expectedContentLength];
_dataToDownload=[[NSMutableData alloc]init];
}
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
[_dataToDownload appendData:data];
progressBar.progress=[ _dataToDownload length ]/_downloadSize;
}