我有一个应用程序向数据服务器发出多个 URL 请求以下载用户数据。我试图通过并行发出 10 个请求来加快下载时间。我尝试了几种不同的方法来做到这一点,但我一直得到的结果是,虽然我(几乎)同时发送了 10 个请求,但我一次只收到一个返回的数据。这意味着总下载时间与我连续发出所有请求一样。这是我尝试过的不同方法。
- 创建了一个 NSOperation 的子类,它具有一个 NSURLConnection 对象并充当该 NSURLConnection 的委托。将此 NSOperation 子类的 10 个实例添加到 NSOperationQueue。
- 创建了 10 个 NSURLConnection 对象并一个接一个地启动它们。(使用单独的委托对象,以便我可以保持响应直截了当。)
这两种情况都可以正确下载数据,但它们都不会像我预期的那样快速接收数据。服务器响应请求所需的时间约为 0.5 - 1.0 秒。因此,如果请求真正并行发出,我希望最多在 1 秒内收到所有 10 个响应。在这两种方法中,我观察到 NSURLConnections 都在大约 5 毫秒内启动,但是请求的 connect:didReceiveResponse 方法以大约 0.7 秒的间隔一个接一个地被调用,就好像请求是连续发出的一样.
我是否误解了 NSURLConnections 或 NSOperationQueues 的工作方式?任何帮助,将不胜感激。谢谢!