|
|
@@ -46,11 +46,15 @@
|
|
|
/** 添加要下载的 网络连接 */
|
|
|
- (void)addDownloadWithURLs:(NSArray *)urls{
|
|
|
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+
|
|
|
+ NSMutableArray *curWaitingUrlArr = [NSMutableArray arrayWithArray:self.downloadWaitingUrlArr];
|
|
|
+
|
|
|
for (NSString *addUrl in urls) {
|
|
|
BOOL needAddType = YES;
|
|
|
|
|
|
//1. 排查下载中
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if([operationDoing.url isEqualToString:addUrl]){
|
|
|
needAddType = NO;
|
|
|
break;
|
|
|
@@ -58,7 +62,7 @@
|
|
|
}
|
|
|
|
|
|
//1. 排查等待下载
|
|
|
- for (NSString *waitUrl in self.downloadWaitingUrlArr) {
|
|
|
+ for (NSString *waitUrl in curWaitingUrlArr) {
|
|
|
if([waitUrl isEqualToString:addUrl]){
|
|
|
needAddType = NO;
|
|
|
break;
|
|
|
@@ -131,8 +135,13 @@
|
|
|
|
|
|
BOOL needAddType = YES;
|
|
|
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+
|
|
|
+ NSMutableArray *curWaitingUrlArr = [NSMutableArray arrayWithArray:self.downloadWaitingUrlArr];
|
|
|
+
|
|
|
+
|
|
|
//1. 排查下载中
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if([operationDoing.url isEqualToString:url]){
|
|
|
needAddType = NO;
|
|
|
break;
|
|
|
@@ -140,7 +149,7 @@
|
|
|
}
|
|
|
|
|
|
//1. 排查等待下载
|
|
|
- for (NSString *waitUrl in self.downloadWaitingUrlArr) {
|
|
|
+ for (NSString *waitUrl in curWaitingUrlArr) {
|
|
|
if([waitUrl isEqualToString:url]){
|
|
|
needAddType = NO;
|
|
|
break;
|
|
|
@@ -158,9 +167,14 @@
|
|
|
/** 删除任务(删除下载url内容的任务) */
|
|
|
- (void)deleteDownloadWithUrl:(NSString *)url
|
|
|
{
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+
|
|
|
+ NSMutableArray *curWaitingUrlArr = [NSMutableArray arrayWithArray:self.downloadWaitingUrlArr];
|
|
|
+
|
|
|
+
|
|
|
//1.检测等待下载的任务
|
|
|
BOOL isWaitingUrlType = NO;
|
|
|
- for (NSString*waitingUrl in self.downloadWaitingUrlArr) {
|
|
|
+ for (NSString*waitingUrl in curWaitingUrlArr) {
|
|
|
if ([waitingUrl isEqualToString:url]) {
|
|
|
[self.downloadWaitingUrlArr removeObject:waitingUrl];
|
|
|
isWaitingUrlType = YES;
|
|
|
@@ -170,7 +184,7 @@
|
|
|
|
|
|
//2.检测下载中的任务
|
|
|
if(!isWaitingUrlType){
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if([operationDoing.url isEqualToString:url]){
|
|
|
operationDoing.isManualCancel = YES;
|
|
|
if(operationDoing.dataTask){
|
|
|
@@ -198,8 +212,13 @@
|
|
|
/** 暂停任务(暂停下载url内容的任务) */
|
|
|
- (void)supendDownloadWithUrl:(NSString *)url
|
|
|
{
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+
|
|
|
+ NSMutableArray *curWaitingUrlArr = [NSMutableArray arrayWithArray:self.downloadWaitingUrlArr];
|
|
|
+
|
|
|
+
|
|
|
//1.检测等待下载的任务
|
|
|
- for (NSString*waitingUrl in self.downloadWaitingUrlArr) {
|
|
|
+ for (NSString*waitingUrl in curWaitingUrlArr) {
|
|
|
if ([waitingUrl isEqualToString:url]) {
|
|
|
[self.downloadWaitingUrlArr removeObject:waitingUrl];
|
|
|
break;
|
|
|
@@ -207,7 +226,7 @@
|
|
|
}
|
|
|
|
|
|
//2.检测下载中的任务
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if([operationDoing.url isEqualToString:url]){
|
|
|
operationDoing.isManualCancel = YES;
|
|
|
|
|
|
@@ -234,11 +253,13 @@
|
|
|
/** 暂停当前所有的下载任务 下载任务不会从列队中删除 */
|
|
|
- (void)suspendAllDownloadTask
|
|
|
{
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+
|
|
|
//1.删除等待下载的任务
|
|
|
[self.downloadWaitingUrlArr removeAllObjects];
|
|
|
|
|
|
//2.检测下载中的任务
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
operationDoing.isManualCancel = YES;
|
|
|
if(operationDoing.dataTask){
|
|
|
[operationDoing.dataTask cancel];
|
|
|
@@ -354,7 +375,8 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
|
|
|
- (BOOL)handleOperateby:(NSURLSessionTask*)dataTask WithResponse:(NSURLResponse *)response {
|
|
|
|
|
|
customDownloadOperation *operation = nil;
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if(operationDoing.dataTask == dataTask){
|
|
|
operation = operationDoing;
|
|
|
break;
|
|
|
@@ -423,7 +445,8 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
|
|
|
- (void)dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
|
|
|
{
|
|
|
customDownloadOperation *operation = nil;
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if(operationDoing.dataTask == dataTask){
|
|
|
operation = operationDoing;
|
|
|
break;
|
|
|
@@ -457,7 +480,8 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
|
|
|
- (void)task:(NSURLSessionTask *)dataTask didCompleteWithError:(NSError *)error
|
|
|
{
|
|
|
customDownloadOperation *operation = nil;
|
|
|
- for (customDownloadOperation *operationDoing in self.downloadingOperationArr) {
|
|
|
+ NSMutableArray *curDownloadingOperationArr = [NSMutableArray arrayWithArray:self.downloadingOperationArr];
|
|
|
+ for (customDownloadOperation *operationDoing in curDownloadingOperationArr) {
|
|
|
if(operationDoing.dataTask == dataTask){
|
|
|
operation = operationDoing;
|
|
|
[self.downloadingOperationArr removeObject:operationDoing];
|