限制在iOS 5中同时发生的NSURLConnection请求数量?

时间:2012-09-12 20:00:01

标签: ios cocoa http

仅在iOS 5中,我正在处理的应用程序似乎在异步发送大量请求时丢弃请求。大意义仍然相当小 - 现在用30测试

每个请求都使用它自己的NSURLConnection,并且预计会相对快速地返回(即300 ms - 2s)。我们也保持一个连接长时间打开。

似乎每个第5个连接都无法离开设备。它当然永远不会到达服务器,使用Charles的网络调试甚至不会显示请求。

我想知道是否有人知道同时打开的NSURLConnection对象和活动请求数量的限制?

值得注意的是,我们在iOS 4中没有看到这个问题。似乎如果我们终止我们的长期连接,那么我们不会再丢弃每个第5个请求。

1 个答案:

答案 0 :(得分:4)

NSOperationQueue是管理此问题的最佳方式。简而言之,您将NSURLConnection包裹在NSBlockOperation中,然后将其添加到队列中。该队列允许您设置各种属性,例如最大并发连接数,并且还为您提供了一种取消排队操作的简便方法。

WWDC视频(2012)中的这种设计模式有一个很好的介绍,名为“在iOS上构建并发用户界面”。

在iOS 5中,您可以使用以下调用启动NSURLConnection并将其添加到NSOperationQueue

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler