我正在制作的应用必须从很多不同的网址中获取大量数据。比方说,大约200个网址,每个网址有50kb-300kb的数据(图像)。
现在,我基本上打开所有这些网址连接,让它们完成后完成。
然而......我真的不确定NSURLConnection在幕后做了什么。我最好设置一个NSURLConnection队列,允许同时说.... 5个连接,当一个连接完成后,另一个连接会启动吗?
换句话说,排队大量NSURLConnections是否有利,在旧连接完成时启动新连接,而不是同时完成所有连接?
答案 0 :(得分:3)
基本上一次打开它们会破坏线程调度程序,它最终会比批量执行更慢,并且设置一次可以打开多少的限制。最好的方法是创建一个网络管理器来管理这种连接。
答案 1 :(得分:1)
根据我的经验,以及我在自己的应用程序中可以观察到的内容,我会说排队是最好的方法。 看看NSOperationQueue(一个非常棒的tuto可用here) 它将帮助您管理专用队列中的多个异步连接。
答案 2 :(得分:1)
这是一个普遍的问题,而不是iOS,任何在线项目(例如网站)都是如此。如果您想接受他们的建议,大多数下载管理员将允许您同时下载5到10个并排队。
我建议使用NSOperationQueue
并让iOS为您进行优化。并且不要忘记为您的请求设置超时,以便阻止的请求不会从您的同时配额中占用。