Блокируют ли вызовы GKSession основной поток?

Я прочитал в Техническом примечании TN2277, что важно закрыть все виды сетевых сокетов, когда приложение переходит в фоновый режим. Это, скорее всего, также включает GKSession.

Они говорят, что при переходе в фоновый режим требуется обработчик истечения срока действия, и что важно, чтобы сетевой код, если он должен попрощаться с другими узлами, вызывался асинхронно.

Так является ли метод GKSession sendData асинхронным или блокирующим?


person openfrog    schedule 21.11.2012    source источник


Ответы (1)


Определенно существует проблема с блокировкой GKSession основного потока при определенных обстоятельствах в iOS 6. В настоящее время мы не можем перенести наш пул iPad на iOS 6, потому что наше корпоративное сетевое приложение GKSession испытывает эти проблемы с блокировкой (но не в iOS 5). или раньше). Например, отправка файла более чем на 4 iPad одновременно с сервера iPad приводит к блокировке. В iOS 5 мы можем без проблем отправить файл до 15 подключенных клиентов одновременно.

Кроме того, наше первоначальное тестирование показало, что при использовании комбинации устройств iOS 5 и 6, если устройство iOS 6 подключается после устройства iOS 5, то устройство iOS 6 будет блокировать основной поток.

Я отправил отчет об инциденте в iOS Dev Center, но ничего не получил...

ОБНОВЛЕНИЕ 30 ноября: я получил ответ от Apple, и они рассматривают это как ошибку в GameKit в iOS 6 и проводят расследование. Если вы также испытываете проблемы с блокировкой GKSession в iOS 6 (но не в iOS 5 или более ранних версиях), вам следует сообщить об этом как об ошибке.

person Greg    schedule 29.11.2012