2015-02-04 4 views
0

Я хочу знать, как правильно использовать [self.operationQueue cancelAllOperations];Как отменить операцию фона в iOS?

Я использую операцию блока в async для получения результатов из моего API. Иногда бывает, что я получаю результат первого запроса после второго запроса, и они отображаются пользователю.

Я использую библиотеку AFNetworking для операций. Любое предложение о том, как я могу убедиться, что только один запрос (последний) активен в определенное время, а предыдущий отменяется автоматически.

+0

Использовал ли вы API-интерфейс кеш и установил тайм-аут – danielad

+1

Невозможно отменить блок. Держите флаг, который говорит, что если уже получен ответ. Если так, вернитесь из блока. – nanjunda

+0

Вы можете установить время ограничения фоновой таймы - http://oleb.net/blog/2013/02/ios-apps-disable-sleep-timer-long-running-tasks/ –

ответ

0

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

Непонятно, для чего вы используете эту операцию, но вам нужно будет подделать подкласс операции, чтобы запустить или обернуть эту логику, которая, по крайней мере, проверила отмену перед запуском окончательного обратного вызова верните результат.

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