2012-04-14 75 views
4

我有一个难以置信的难以调试的问题。如果我的应用程序使用WiFi,并且闲置时间大约为30分钟,有时候我会将其唤醒,NSURLConnection不再响应。请求被发送,但从不返回。iPhone应用程序失去互联网连接(NSURLConnection不返回)

起初,我认为这是一个内存错误,实例被释放得太早,因此从不返回响应。但是,如果我将该应用放在后台,请进入设置,关闭WiFi以便3G独占使用,然后返回到应用程序,互联网连接就会恢复生机,并且所有待处理的NSURLConnection都会返回并完成。

显然这是使用WiFi的人的问题。这真的是WiFi问题,还是我错过了什么?去Safari等另一个应用程序,使用WiFi无线电并返回到我的应用程序不能解决问题 - 连接仍然不会返回。我已经用Xcode描述了这一点,并且我正在用尽想法。

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

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

+1

您是否尝试设置'UIRequiresPersistentWiFi'标志? – esqew 2012-04-14 05:57:06

+0

我这么认为 - '应用程序使用WiFi'在pList文件中。 – 2012-04-14 06:03:02

+0

你是否无意中阻塞了主线程?你有没有尝试在后台线程中使用同步NSURLConnections? – magma 2012-04-17 02:39:06

回答

0

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

+0

我认为有可能在某些情况下我没有真正提交NSURLConnection,因为我是继承类。我会仔细看看的。也许没有子类化的测试可能会解决它。感谢您的建议。 – 2012-04-18 19:10:25

相关问题