我遇到了一个难以调试的问题。如果我的应用程序使用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它,服务器仍会返回。
答案 0 :(得分:3)
对于遇到此问题的任何其他人来说,这是由TestFlight v1.0及更低版本引起的:
答案 1 :(得分:0)
您是否实际通过NSURLConnection
发送/接收任何数据?如果没有,您是否可能遇到TCP会话超时?如果问题在本地服务器上仍然存在,似乎不太可能,但是任何介入的状态防火墙/数据包检查器可能会丢弃您的TCP连接。