2012-04-14 122 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