У меня есть многочисленные UIWebViews в моем приложении iOS (версии 5-6.2). Когда приложение входит в фоновый режим, все работает плавно. Однако, когда он выходит на передний план через ~ 10 минут, я получаю сообщение об ошибке, говорящее что-то вроде «допустимое имя хоста не может быть найдено» или «таймаут соединения».Убивать соединения, поскольку приложение входит в фон
Я предполагаю, что это связано с моим отсутствием действий в отношении этих UIWebViews, когда вызывается applicationDidEnterBackground:
. Как я могу убить эти соединения? Я понимаю, что мне нужно использовать центр уведомлений, но в отличие от предыдущих вопросов, подобных этому, я использую ARC, поэтому нет метода dealloc
, в котором я могу удалить наблюдателей.
EDIT
Вот некоторые из моих веб-кода вида: WebViewController.m
NSURLRequest *request = [NSURLRequest requestWithURL:urlToLoad cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0f];
// load the request to the UIWebView _webView
[_webView loadRequest:request];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:TRUE];
if (connection) {
receivedData = [NSMutableData data];
}
Любая помощь очень ценится. Спасибо.
Периодически загружайте страницы, которые вы загружаете? Если вы действительно видите ошибки в виде сообщений, они, скорее всего, поступают из javascript на странице. – SVD
Нет, они не требуют чего-то периодически. Появляющиеся сообщения - это просто UIAlertViews, которые я установил, когда соединение терпит неудачу. Но вместо того, чтобы заполнять это сообщение чем-то, что я пишу, я просто использую localizedDescription из NSError. – eulr
Завершают ли они загрузку перед перемещением приложения в фоновом режиме? Если нет, возможно, стоит попросить некоторое время от ОС, как показывает другой ответ. Если вы просто хотите остановить загрузку, работает ли [webview stopLoading]? – SVD