iPhone应用程序失去互联网连接(NSURLConnection没有返回)

时间:2012-04-14 05:49:09

标签: iphone ios nsurlconnection reachability

我遇到了一个难以调试的问题。如果我的应用程序使用WiFi并且它闲置大约30分钟,有时当我将其唤醒时,NSURLConnection不再响应。请求已发送,但永远不会返回。

起初,我认为这是一个内存错误,实例发布得太早,因此永远不会返回响应。但是,如果我将应用程序置于后台,进入设置,关闭WiFi以便专门使用3G,并返回应用程序,互联网连接神奇地恢复生机,所有待处理的NSURLConnection返回并完成。

显然,对于使用WiFi的人来说,这是一个问题。这真的是一个WiFi问题,还是我错过了什么?去Safari这样的另一个应用程序,使用WiFi收音机并返回我的应用程序并没有解决问题 - 连接仍然没有返回。我用Xcode跟踪过这个问题,但我的想法已经不多了。

此外,“应用程序使用WiFi”Info.plist标志设置为ON,这是固件5.1。 '应用程序使用WiFi'与UIRequiresPersistentWiFi相同吗?

更新:这与Wifi标志无关 - 它可能在5分钟内死亡。到目前为止,我只能在带有5.1固件的iPhone 4s上复制它。这不是一个真正的解决方案,但我正在擦除手机,尝试全新安装,看看是否有任何影响。我已经确认总是在主线程上调用NSURLConnection,并在connection:failedWithError:connection:didReceiveResponse:设置断点。当连接中断时,这些都不会返回,直到我禁用并重新启用WiFi,然后一次全部返回。这也发生在本地服务器上,如果我用网络浏览器ping它,服务器仍会返回。

2 个答案:

答案 0 :(得分:3)

对于遇到此问题的任何其他人来说,这是由TestFlight v1.0及更低版本引起的:

Why does NSURLConnection fail to reach the backend?

答案 1 :(得分:0)

您是否实际通过NSURLConnection发送/接收任何数据?如果没有,您是否可能遇到TCP会话超时?如果问题在本地服务器上仍然存在,似乎不太可能,但是任何介入的状态防火墙/数据包检查器可能会丢弃您的TCP连接。