Как сказать iPhone NSURLConnection прервать - PullRequest
2 голосов
/ 23 февраля 2011

У меня есть приложение, которое умеренно использует NSURLConnection. Эти асинхронные вызовы в конечном итоге завершаются и освобождаются должным образом (похоже), но иногда для их завершения требуется некоторое время.

Итак, бывают случаи, когда я выхожу из приложения (обратите внимание, не просто отправляя его в фоновом режиме), что некоторые из этих соединений все еще активны. Если я немедленно перезагружаю приложение, оно зависает при запуске. (didFinishLaunchingWithOptions никогда не вызывается).

Хотя я не уверен, что эти соединения являются проблемой, было бы неплохо прекратить или отменить оставшиеся Любые предложения о том, как это сделать?

Бонусные баллы о том, как отлаживать перезапуск также. (Я уже сохраняю операторы NSLog в загружаемый файл)

Ответы [ 3 ]

7 голосов
/ 24 февраля 2011

Вы можете отменить любое NSURLConnection, отправив ему команду отмены.

[connection cancel];

Из Apple документы

Отменяетасинхронная загрузка запроса.После вызова этого метода делегат получателя больше не будет получать никаких сообщений для этого NSURLConnection.

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

0 голосов
/ 30 марта 2015

Для отмены последнего запроса: [NSURLConnection cancelPreviousPerformRequestsWithTarget: self];

Для отмены любого конкретного запроса: [запрос отмены]; Примечание. Здесь запрос являетсяэкземпляр NSURLConnection

0 голосов
/ 23 февраля 2011

Убедитесь, что вы вызываете релиз по соединению.Возможно, это не вызывает выключение или закрытие сокета, пока не будет удалена последняя ссылка.Я делаю что-то подобное без проблем со ссылками.

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection release];
[request release];
...