2013-12-09 77 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以支持您想要完成的工作。