Однако, когда сигнал плохой, он просто застревает там навсегда ..
Время ожидания по умолчанию для NSURLConnection довольно хорошее, и, вероятно, его не следует изменять. Что вы имеете в виду с «застрял навсегда». Вы проверяете наличие ошибок, чтобы определить, истекло ли время вашего соединения, чтобы вы могли ответить на это?
Например, вы реализовали делегат ошибок?
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
Согласно обсуждению разработчиков Apple, упомянутому в посте, на который ссылается @ElJay, если вы используете тело http, минимальный тайм-аут составляет 240 секунд. Также предлагаемое время ожидания @ElJay в 10 секунд является коротким для мобильных сетей. Я бы посоветовал сохранить время ожидания по умолчанию и попытаться улучшить обработку ошибок.