使用iOS标准类等进行异步后台下载



我想使用NSURLConnection和NSOperationQueue(?)通过https下载几个页面。我不想使用ASIHTTPRequest或类似的,因为我不希望我的代码依赖于他们在苹果更新iOS时更新代码(如果需要)。我想用普通的苹果产品。

大约有100个页面将被下载,它们有一个也应该下载的图像的url。在下载上一页之前,此链接是未知的。我认为5个或者更多的并发下载应该在同一时间运行。

我如何跟踪所有内容和下载进度,同时实现响应用户界面?

我认为您可以使用NSURLConnection和NSOperationQueue,正如您已经编写的那样。NSURLConnection有一个类函数

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

在那里,您可以定义它应该属于哪个NSOperationQueue,还可以定义一个完成处理程序。处理程序是一个块,它将在NSURLConnection完成时执行。在块中,您可以访问NSURLResponse。由于整个过程是异步的,所以用户界面是可以访问的。

这里的一个巨大优势是,这些块可以在不同的cpu内核上执行。

最新更新