Как сказать функцию ОС IPhone, чтобы остановить / отменять?
-
28-09-2019 - |
Вопрос
У меня есть действие, которое начинается, когда пользователь нажимает на кнопку на экране (например, «Импорт»). В то же время, в нижней части экрана появляется Uitoolbar, что дает пользователю возможность отменить это действие. Как я могу правильно отправить сообщение отмены на начальную функцию? Если пользователь попадает в «Отмена», я не хочу, чтобы «импорт» продолжался. Теоретически я мог бы настроить его как отдельную ветку (которую я тогда мог бы убить), но я не уверен, что такое правильный способ сделать это, чтобы он мог очистить его за себя. Какие другие стратегии могут быть в состоянии «убить» функцию, которую пользователь уже начал?
Решение
Создайте отдельную работу, используя что-то вроде:
NSOperationQueue* queue = [[[NSOperationQueue alloc] init] autorelease];
[queue addOperation: [[[NSInvocationOperation alloc] initWithTarget: self
selector: @selector(_backgroundWorker)
object: nil] autorelease]];
Этот путь _backgroundworker будет выполнен без остановки основного потока пользовательского интерфейса.
Нажата одна кнопка «Отмена», установите некоторую внутреннюю переменную и проверьте его значение внутри _BackgroundWorker.