2015-04-10 6 views
1

У меня есть фоновая задача, которая загружает изображения и видео на сервер.ios cancel dispatch_async task

Пользователь может отменить эту операцию посередине.

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

(и главная проблема в том, что пользователь может вернуться к процесс снова и повторно активировать логическое значение до того, как «плохое» видео закончит загрузку)

ответ

2

NSOperationQueue имеет поддержку для отмены операций. Так, например, вы можете создать серию NSOperations и добавить их в NSOperationQueue, а затем сообщение -cancelAllOperations в очередь, когда вам это не понадобится.

Затем, когда пользователь вернется, операция будет создана снова, и запрос будет отправлен в очередь.

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