在后台线程中下载多个文件?

时间:2017-08-11 17:26:23

标签: ios objective-c nsurlconnection

我是按照用户要求一次下载文件或逐个下载文件。下载文件后,我将通知发送到另一个视图作为sucessfull消息。

当我一次下载单个文件时,它成功下载了该文件。但是当我试图在6秒的时间间隔内下载两个或更多文件时(按下另一个下载按钮),第一个文件没有下载。它只下载我发送下载的最后一个文件。

任何帮助都将不胜感激。

url=[NSURL URLWithString:currentURL];
NSMutableURLRequest * request = [[NSMutableURLRequest alloc]initWithURL:url];
[request setHTTPMethod:@"GET"];

NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];        
  dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
   { //Background Thread
       {

       [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *dataMain, NSError *error)
        {
            if ([dataMain length]/1024.0f > 600 && error == nil)
            {

                [dataMain writeToFile:pathOriginal atomically:YES];
                NSLog(@"orginal file saved");      
            }
        }];
       }
  dispatch_async(dispatch_get_main_queue(), ^(void){
[[NSNotificationCenter defaultCenter] postNotificationName:@"TestNotification" object:self];
       }); });

1 个答案:

答案 0 :(得分:1)

在每次调用之前使用dispatch async。这样每个调用都将在不同的线程上运行,并将解决您的问题。

希望这有帮助!