Вы не можете немедленно остановиться, используя все, что Apple предоставляет с NSOperation
. Вы можете использовать -[cancel]
, как предложили другие люди, но текущая операция будет продолжаться до завершения. Один из способов приблизиться к использованию -[isCancelled]
внутри вашей операции и разбросать его по всему коду (особенно в длинных циклах). Что-то вроде:
- (void)main {
// do a little work
if ([self isCancelled]) { return; }
// do a little more work
if ([self isCancelled]) { return; }
}
Таким образом, вы сравнительно скоро остановитесь.
Если вы действительно хотите остановить поток, возможно, вам придется изучить обработку сигналов. Здесь есть пример с резьбой . Отправляя пользовательский сигнал определенному потоку, вы можете затем каким-то образом завершить этот поток. Это будет намного больше работы, и, вероятно, будет гораздо больше проблем, чем оно того стоит.