Junior — Middle
Може ли да прекъснете изпълнението на задача, стартирана чрез NSOperation?
sobes.tech AI
Отговор от AI
Да, възможно е да се опита да се прекрати задача, стартирана чрез NSOperation, като се извика методът cancel() върху операцията. Важно е обаче да се разбере, че извикването на cancel() не спира операцията мигновено — то само задава флаг за отменяне. Вашата задача трябва периодично да проверява свойството isCancelled и да завършва правилно, ако операцията е отменена.
Пример:
class MyOperation: Operation {
override func main() {
for i in 0..<1000 {
if isCancelled {
print("Операцията е отменена")
return
}
// Изпълнение на задачата
print(i)
}
}
}
let operation = MyOperation()
operationQueue.addOperation(operation)
// По-късно
operation.cancel() // Опит за отменяне на операцията
Така, отменянето е кооперативно действие, и операцията трябва да проверява флага за отменяне, за да прекъсне правилно.