4

我遇到了一个非常难以调试的问题。如果我的应用程序正在使用 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:and处设置断点connection:didReceiveResponse:。当连接断开时,这些都不会返回,直到我禁用并重新启用 WiFi,然后立即全部返回。这也发生在本地服务器上,如果我用网络浏览器 ping 它,服务器仍然会返回。

4

2 回答 2

3

对于遇到此问题的任何其他人,这是由于 TestFlight v1.0 及以下版本:

为什么 NSURLConnection 无法到达后端?

于 2012-04-24T08:42:25.467 回答
0

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

于 2012-04-17T02:18:55.710 回答