繁体   English   中英

使用GCD / NSOperation进行串行下载

[英]Serial download with GCD/NSOperation

我有一个应用程序,试图从URL下载图像/视频等文件。 目前,我正在使用大型中央调度程序在我的主线程上建立异步NSURL连接,因此它可以

=

代替在主线程上使用异步NSURConnections,而在后台线程上运行同步NSURLConnections。 我建议创建一个NSOperationQueue而不是直接使用GCD,因为它更容易。 使用-addOperationWithBlock:或通过创建NSOperation子类将请求排队。 除非您另外指定,否则它们一次只能运行一次。

AFNetworking是一个漂亮的库,可以满足您的大部分需求。 在这里,您只需要

1)初始化主队列(NSOPerationqueue),并将其最大并发操作设置为所需的值。 设置为2时,我很好,并且该应用程序响应速度非常快(从flickr下载了大量图像。

2)将您的内存缓存NSURLCache配置为适当的值-需要进行一些测试以适合您的应用使用情况-

3)下载图像或视频时,请确定应将哪种缓存策略应用于URLRequest(使用缓存,忽略缓存等...),请注意,某些服务器不会发送缓存信息标头,因此除非您手动检查,否则始终可能会发生重新验证缓存内容,然后提取图像(在这种情况下,显示速度非常快)。 如果您有很多图像,重新验证可能会花费一些时间。

4)通过标准单例访问此队列。

5)将您的操作加入该队列。

这具有较低的内存占用空间,并且效果非常好。

等等!

注意:您正在清洁[downloadArray addObject:imageObject]; 在某一点 ? 注意:读取不正确,但是对于您而言,您可能需要将最大操作设置为1

试试我的答案:

如果要下载多个文件,则必须使用HCDownloadViewController,因为它会创建下载队列。 在下面的链接中查看我的答案。

iOS NSURLConnection无法从某些URL下载文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM