我遇到了一个非常难以调试的问题。如果我的应用程序正在使用 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 它,服务器仍然会返回。