У меня проблема, которую невероятно сложно отладить. Если мое приложение использует Wi-Fi и простаивает около 30 минут, иногда, когда я его просыпаю, NSURLConnection
больше не отвечает. Запросы отправляются, но не возвращаются.
Сначала я подумал, что это ошибка памяти, когда экземпляры выпускаются слишком рано и поэтому никогда не возвращают ответ. Однако, если я помещаю приложение в фоновый режим, захожу в настройки, выключаю Wi-Fi, чтобы использовать только 3G, и возвращаюсь в приложение, подключение к Интернету волшебным образом оживает, и все ожидающие NSURLConnection
s возвращаются и завершаются.
Очевидно, это проблема для людей, использующих Wi-Fi. Это действительно проблема с Wi-Fi или я что-то упустил? Переход к другому приложению, например Safari, использование радио Wi-Fi и возвращение в мое приложение не решает проблему - соединения по-прежнему не возвращаются. Я отследил это с помощью Xcode, и у меня заканчиваются идеи.
Также установлен флаг Info.plist «Приложение использует WiFi», и это прошивка 5.1. "Приложение использует Wi-Fi" - это то же самое, что и UIRequiresPersistentWiFi?
Обновление: это не имеет ничего общего с флагом Wi-Fi - он может умереть в течение 5 минут. Пока что мне удалось скопировать его только на моем iPhone 4s с прошивкой 5.1. На самом деле это не решение, но я стираю телефон, чтобы попробовать его с новой установкой, чтобы посмотреть, имеет ли это какой-либо эффект. Я проверил, что NSURLConnection
всегда вызывается в основном потоке, и установил точки останова на connection:failedWithError:
и connection:didReceiveResponse:
. Когда соединение прерывается, ни один из них не возвращается, пока я не отключу и снова не включу Wi-Fi, а затем все вернется сразу. Это также происходит на локальном сервере, и сервер все равно возвращается, если я пингую его с помощью веб-браузера.
UIRequiresPersistentWiFi
? - person esqew   schedule 14.04.2012