我有一个使用NSURLSession从url下载视频的程序,但我不能同时下载多个视频。我该怎么做呢?如何管理多个同时下载?
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];发布于 2016-05-16 07:18:57
从上面提供的代码可以看出,您没有使用NSURLSessionConfiguration类的任何属性来实现更好的下载性能。
首先,我建议使用您自己的委托队列。如果不提供队列,则会话将为所有委托和完成处理程序调用创建一个串行操作队列。有关详细信息,请参阅NSURLSession Class Reference document的“创建会话”部分。您可以查看NSOperationQueue的以下属性来帮助提高性能;
qualityOfService
maxConcurrentOperationCount接下来,我将查看可能会有所帮助的NSURLSessionConfiguration属性。
HTTPMaximumConnectionsPerHost
HTTPShouldUsePipelining最后,您应该查看“使用自定义委托的URL会话的生命周期”一节。您应该确认是使用NSURLSessionTaskDelegate和NSURLSessionDownloadTaskDelegate的委托方法,还是仅使用完成处理程序。
您需要花费更多的时间来配置NSURLSession以支持您想要做的工作。
https://stackoverflow.com/questions/20481487
复制相似问题