Подтвердить что ты не робот

PurgeIdleCellConnections: обнаружено, что для чистки conn = 0x1ddde360

Я не могу найти правильное решение этой проблемы. Я думаю, кто-то может помочь мне очистить эту ошибку.

Резюме: Когда я использую 3G-соединение для тестирования своего приложения на устройстве, к тому моменту, когда консоль показывает эту ошибку "purgeIdleCellConnections: found one to purge conn = 0x1ddde360" более одного раза, это происходит с другим номером (0x1ddde360 or 0x21b98a60 or....). Иногда он зависает, и приложение падает и умирает. Я не могу открыть приложение. Я должен удалить и построить снова. Когда я использую Wi-Fi, он отлично работает: никаких проблем.

Фактические результаты: Я использую веб-сервис (WSDL) в своем приложении. При запуске приложения я вызываю несколько веб-сервисов. Это приложение уже находится в App Store (Promayarnlite), но этот файл был создан с использованием IOS 5.1 SDK, поэтому он отлично работал. Теперь я обновил свой Xcode до 4.5.1 и IOS 6 SDK, поэтому я хочу обновить свое приложение в App Store. Я борюсь с этой частью.

EDIT: A: внутренне NSURLConnection поддерживает кеш подключений. Каждая запись кэша представляет собой набор постоянных HTTP-соединений с хостом. Когда приходит новый запрос, он помещается в очередь в записи в кеше. Это может быть существующая запись, или она может быть новой записью, а также может генерировать новое HTTP-соединение внутри этой записи в зависимости от различных сложных факторов (защитное пространство, статус аутентификации [в случае методов проверки подлинности - да, Я смотрю на вас, NTLM! - это состояние), конвейерная обработка, различные ограничения кеша и т.д.). Когда соединение, связанное с записью кэша, завершает выполнение всех своих запросов, оно ищет больше работы в очереди ввода кэша; если он не обнаружит соединения, простаивает. Если соединение слишком долгое время, соединение очищается (что закрывает базовое TCP-соединение).

Эта реализация кэша изменилась в iOS 6. До iOS 6 существовал единственный механизм для очистки записей кэша в режиме ожидания, с радикально отличающимися тайм-аутами для Mac OS X и iOS (30 секунд против 6 секунд, а значение iOS могло быть как минимум 3 секунды в более старых версиях iOS). В iOS 6 теперь есть два механизма для очистки записей кэша простоя, которые применяются к соединениям, работающим по WWAN, и к тем, которые применяются ко всем другим соединениям. Тайм-аут WWAN опустился до своего традиционного значения (3 секунды), в то время как тайм-аут all-other-connections был наложен на старую Mac OS X по умолчанию (30 секунд).

Сообщение журнала, которое вы видите, генерируется при очистке соединения WWAN. Это сообщение журнала не было в iOS 5.x, что объясняет, почему вы не видите его в своих тестах. Однако основной механизм присутствовал в той или иной форме во всех версиях iOS.

Это сообщение скорее всего будет симптомом, чем причиной. В частности, это сообщение относится только к незанятым соединениям; это просто NSURLConnection, очищающий постоянные HTTP-соединения, которые ничего полезного не делают. Если у вас возникли проблемы с вашей сетью, вам нужно выяснить, почему соединения не работают.

4b9b3361

Ответ 1

При использовании AdMob Mediation SDK этот на устройстве под управлением iOS 6.0.1 (iPhone 3GS). Само приложение делает 100+ подключение к серверу (следующий серверный API исправляет эту проблему), но эти сообщения журнала консоли начали появляться только после того, как соединения AdMob стали активными. Как 3G, так и Wi-Fi (соединение 10 М).

Лучше догадаться, что iOS не радует получение сетевых вызовов из двух разных сетевых библиотек - AdMob в этом случае, но я думаю, это может быть что угодно. Совпадение.

Иногда приложение полностью застревает, иногда нет видимых проблем. Хотел бы это исправить, но пока ничего не нашел...

Ответ 2

Когда на устройстве, подключенном к сотовой сети, я заметил это отладочное сообщение, выходящее из SDK iOS 6.0. С учетом времени я считаю, что это коррелирует с "активными" вызовами AJAX, которые заканчиваются в моем приложении. Однако это очень сложно доказать, так как это происходит только при рендеринге веб-страницы в UIWebView. Я просто говорю, что я не думаю, что сообщения являются доброкачественными. Я думаю, что они могут указывать на ошибку в структуре Apple, которая чрезмерно агрессивна при завершении соединений. Трудно получить инструментарий на javascript, запущенном внутри UIWebView, который вызывает вызовы AJAX, поэтому в это время все они очень спекулятивны.