1

我正在制作的应用程序必须从许多不同的 url 中获取大量数据。比方说,大约 200 个 url,每个都有 50kb-300kb 的数据(图像)。

现在,我基本上是一次打开所有这些 url 连接,并让它们在完成时完成。

但是......我不太确定 NSURLConnection 在幕后到底在做什么。设置一个允许说.... 5 个连接的 NSURLConnection 队列会更好吗,当一个连接完成后,另一个连接会开始?

换句话说,将大量 NSURLConnections 排队,在旧连接完成时开始新连接,而不是同时进行所有连接,是否有优势?

4

3 回答 3

3

基本上一次打开它们会破坏线程调度程序,它最终会比批量执行要慢,并设置一次可以打开多少个限制。最好的方法是创建一个网络管理器来管理这个连接。

于 2013-02-22T16:17:54.743 回答
1

根据我的一点经验,以及我在自己的应用程序中观察到的情况,我会说排队是最好的方式。看看 NSOperationQueue(这里有一个非常棒的教程)它将帮助您在专用队列中管理多个异步连接。

于 2013-02-22T16:21:04.243 回答
1

这是一个普遍的问题,而不是 iOS,对于任何在线项目(例如网站)都是如此。如果您想听取他们的建议,大多数下载管理器将允许您同时下载 5-10 个下载并将其他人排队。

我建议使用NSOperationQueue并让 iOS 为您进行优化。并且不要忘记为您的请求设置超时,这样被阻止的请求就不会占用您的同时配额。

于 2013-02-22T16:25:54.430 回答