SCNetworkReachabilityGetFlags в образце кода Reachability может занять слишком много времени - PullRequest
2 голосов
/ 16 декабря 2010

Я использую iOS4.1 на iPhone4. Я также использую последнюю версию кода Reachability. У моего устройства нет соединения, но кажется, что код ожидает тайм-аут, иначе устройству требуются целые месяцы, чтобы сообщить о состоянии доступности.

этого не происходит на iOS4.0.1 с использованием iPhone3gs.

Кто-нибудь еще сталкивался с этим? Есть ли способ обойти это, кроме создания новой темы?

1 Ответ

7 голосов
/ 06 января 2011

Вы уверены, что используете его асинхронно?

Из документов Apple ReadMe.txt по проекту Reachability:

Пример Reachability демонстрирует асинхронное использование API SCNetworkReachability,Вы можете использовать API синхронно, но не выполнять синхронную проверку по hostName в основном потоке.Если устройство не может связаться с DNS-сервером или находится в медленной сети, синхронный вызов функции SCNetworkReachabilityGetFlags может блокировать до 30 секунд, пытаясь разрешить имя хоста.Если это произойдет в главном потоке, сторожевой таймер приложения убьет приложение после 20 секунд бездействия.

Итак, я думаю, что вы правы - запустите фоновый поток для его обработки.

...