Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在后台线程中下载多个文件?_Ios_Objective C_Nsurlconnection - Fatal编程技术网

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

Ios 在后台线程中下载多个文件?,ios,objective-c,nsurlconnection,Ios,Objective C,Nsurlconnection,我一次下载文件,或者一个接一个,或者只根据用户需求下载一个。下载文件后,我会将通知作为SuccessFull消息发送到另一个视图 当我一次下载一个文件时,它成功地下载了该文件。但当我试图在6秒的时间间隔内下载两个或多个文件时(按另一个下载按钮),第一个文件没有下载。它只下载我要下载的最后一个文件 任何帮助都将不胜感激 url=[NSURL URLWithString:currentURL]; NSMutableURLRequest * request = [[NSMutableURLReques

我一次下载文件,或者一个接一个,或者只根据用户需求下载一个。下载文件后,我会将通知作为SuccessFull消息发送到另一个视图

当我一次下载一个文件时,它成功地下载了该文件。但当我试图在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];
       }); });

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


希望这有帮助

NSURLConnection
已弃用。您应该使用
nsursession
进行新的开发。
NSURLSession
将处理多个下载。(NSURLConnection也是如此,但考虑到它已被弃用,因此不值得调试。

你能详细说明一下吗?mobile中的Im不能发布代码片段,而是复制此调度异步(调度获取全局队列(调度队列优先级默认为0),^(无效){//后台线程调度异步(调度获取主队列(),^(无效){//运行UI更新});});天哪,为什么?这是4个主要版本过时了。Xcode 9正在测试中,所以很快就会有5个主要版本过时。耶,我知道我刚刚开始,我的macbook只支持Xcode 4。你只能使用Xcode 4.6为iOS 6构建。你的Mac太旧了,不能运行当前版本的OS X吗?我的家用Mac是2012年年中的MBP,它运行的是最新的OS10(10.12.6)还可以。我的mac笔记本电脑只支持10.8。