2011-09-12 4 views
0

Я использую три20 и реализую модель, например, пример TTRemoteExamples. Теперь проблема заключается в следующем: когда я нажимаю и открываю страницу, TTURLRequest отправляется во время извлечения данных с удаленного компьютера, я нажимаю, чтобы открыть другую страницу. Но предыдущий сетевой запрос все еще там загрузил мои загруженные данные. Поэтому я хочу знать, как отменить предыдущий сетевой запрос, когда я переключаюсь на другую страницу. Или когда я нажимаю кнопку, чтобы выполнить новый запрос на той же странице.Три20: отменить запрос сети

Благодаря ~

ответ

1

Чтобы отменить TTURLRequest, сохранить ссылку на него (обычно в переменной экземпляра), а затем отправить его сообщение «отменить». Как так:

[self.myRequest cancel]; 

Если вы не хотите, делегат должны быть уведомлены о запрос аннулируется, сделайте следующее:

// I'm assuming self is the delegate here, that may not be true 
[[self.myRequest delegates] removeObject:self]; 
[self.myRequest cancel]; 

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

Что касается времени, когда вы отменяете его, это зависит от вас. Если вам нужно, чтобы он остановился, когда пользователь покидает ваш контроллер просмотра, тогда реализуйте представление UIViewController viewWillDisappear: или viewDidDisappear: методы (не забудьте вызвать super!).

+0

Спасибо, приятель, я использую это для разработки: [[TTURLRequestQueue mainQueue] cancelRequestsWithDelegate: self]; Но я помету твой, так как ты дал мне полезный момент! Спасибо! –

+0

А, это тоже замечательный призыв! –

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