2013-12-09 54 views
1

我有一个程序,使用NSURLSession从网址下载视频,但我无法同时做多个下载。 我该怎么做? 我如何管理多个同时下载?多个下载NSURLSession

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; 

    NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil]; 

    NSURLSessionDownloadTask *getVideo = [session downloadTaskWithURL:fileURL 
                completionHandler:^(NSURL *location, 
                     NSURLResponse *response, 
                     NSError *error) { 
                 // 2 
                 receivedData = [NSData dataWithContentsOfURL:location]; 
                 dispatch_async(dispatch_get_main_queue(), ^{ 
                  // do stuff with image 
                  NSLog(@"%s receiveData:%d",__FUNCTION__,[receivedData length]); 
                 }); 
                }]; 
    [getVideo resume]; 
+1

你为什么要发表另一个问题?如果你有更多的细节,只需更新你以前的问题。 – rmaddy

+0

你原来的问题在哪里?它得到了答案吗? – marciokoko

回答

0

从上面提供的代码中,您没有使用NSURLSessionConfiguration类的任何属性来启用更好的下载性能。

首先,我会看看建议使用您自己的委托队列。如果您没有提供队列,则会话将为所有委托和完成处理程序调用创建一个串行操作队列,以了解更多详细信息,请参阅NSURLSession Class Reference document的“创建会话”部分。您可以查看NSOperationQueue的以下属性以帮助提高性能;

qualityOfService 
maxConcurrentOperationCount 

接下来我会看看NSURLSessionConfiguration属性可能会有所帮助。

HTTPMaximumConnectionsPerHost 
HTTPShouldUsePipelining 

最后,您应该查看“使用自定义代表的URL会话生命周期”一节。您应该确认您是否使用NSURLSessionTaskDelegateNSURLSessionDownloadTaskDelegate的代理方法或仅使用完成处理程序。

您需要花更多时间来配置NSURLSession以支持您想要完成的工作。