首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个NSURLConnection响应的故障排除

多个NSURLConnection响应的故障排除
EN

Stack Overflow用户
提问于 2012-05-31 22:00:43
回答 1查看 191关注 0票数 1

我有一个应用程序,它向一个数据服务器发出多个URL请求,以便下载用户数据。我试图通过并行发出10个请求来加快下载时间。我尝试了几种不同的方法来实现这一点,但是我一直拥有的结果是,虽然我同时发送了10个请求(几乎),但我每次只接收一个数据。这意味着总下载时间与我按顺序发出所有请求的时间相同。这是我尝试过的不同的东西。

  1. 创建了一个具有NSURLConnection对象的NSOperation子类,并充当该NSURLConnection的委托。将这个NSOperation子类的10个实例添加到一个NSOperation 10 NSURLConnection对象中,并一个接一个地启动它们。(使用单独的委托对象,以便使响应保持直线。)

这两种情况下正确下载数据都没有问题,但它们都不会像我预期的那样快速地接收数据。服务器响应请求所需的时间大约为0.5秒-1.0秒。因此,如果请求是真正并行的,我将期望在最多1秒内收到所有10个响应。在这两种方法中,我都注意到NSURLConnections都是在大约5毫秒内启动的,但是connect:didReceiveResponse请求的方法被一个接一个地调用,间隔约为0.7秒,就好像请求是串行的一样。

我是否误解了NSURLConnections或NSOperationQueues的工作方式?任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-06-04 18:59:55

如果您使用几个NSURLConnection向同一台服务器提出请求,那么您实现的两种方式几乎不会有任何区别。但是,如果您正在与10个不同的服务器建立10个连接,那么其中一个或两个服务器可能会非常慢,并且需要时间来响应请求,那么第二种方法将比第一种方法花费很长的时间。在第二种方法中,下一个请求将只在从当前方法获得响应后发送,但在第一个方法中,由于请求是并行运行的,所以请求将在得到响应后立即完成,下一个请求将被排队。在这种情况下,如果maximumConcurrentOperation = 1,两种方法都会给出相同的结果。

代码语言:javascript
运行
复制
    Approach 2:
<--t1--><--t2--><--t3--><------t4------><--t5--><--------t6--------><--t7--><--t8-->
<----------------------------------Total Time-------------------------------------->

Approach 1: maximumConcurrentOperation = 2

<--t1-->
<--t2-->
        <--t3-->
        <------t4------>
                <--t5-->
                        <--------t6-------->
                        <--t7-->
                                <--t8-->
<--------------Total Time------------------>

希望这能消除你的疑虑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10841903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档