2012-01-18 4 views

ответ

1

Если вы используете обычное NSURLConnection, вы можете просто отправить его команде cancel. (docs)

INIT нравится:

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

отменить так:

[connection cancel]; 
+0

Привет, спасибо за ответ, однако у меня нет доступа для получения переменной соединения, а также ее выполнения в файле библиотеки. Пожалуйста, предложите мне лучшее решение для приведенного выше комментария ... – Nitu

+0

Quick 'n dirty: отредактируйте lib, чтобы открыть соединение. Например. например: - (NSURLConnection *) соединение {return _connection; } Альтернативно, вы, возможно, захотите обработать соединение самостоятельно, его достаточно просто, чтобы использовать lib вообще? – Wolfert

0

мы говорим о +[NSURLConnection sendSynchronousRequest:returningResponse:error:]? В этом случае вы не можете остановить этот запрос.

Если вам необходимо остановить работу сети в середине полета, вам необходимо использовать асинхронный API. Я лично предпочитаю использовать свой собственный, используя NSURLConnection, и каков минимальный объем работы для текущей задачи, обычно NSOperation или просто какой-то GCD. Я настоятельно рекомендую вам научиться использовать NSURLConnection, даже если вы решите использовать какой-либо другой подход.

Один такой другой подход - AFNetworking, который обертывает NSURLConnection - это NSOperation, что вы можете позвонить по телефону cancel.

+0

Эй, спасибо за это, у меня есть файлы библиотеки, которые используют синхронное соединение и не могут изменять код сейчас. Я делаю вызов сервера в другом потоке, и когда я перехожу с фона на передний план, я проверяю, выполняется ли этот поток, и если это так, я отменяю его, чтобы избежать сбоя, однако я все еще терплю неудачу в низком сетевом соединении, которое говорит «iphone не смог возобновиться вовремя». Я хотел бы исправить эту проблему, не могли бы вы мне помочь? – Nitu

+0

@Nitu не хватает фактически осуществление отмены. Когда ваше приложение будет предложено возобновить, у вас будет 20 секунд, чтобы ответить, иначе сторожевой таймер вас убьет. Изменение кода, не использующего синхронный доступ к сети, является вашим единственным решением. – PeyloW

+0

Эй, Пейлоу, пожалуйста, будьте предельно ясны. Благодарю. – Nitu

Смежные вопросы