Junior — Middle
Lehetséges megszakítani egy NSOperation segítségével indított feladat végrehajtását?
sobes.tech MI
Válasz az MI-től
Igen, megpróbálhatja megszakítani az NSOperation segítségével indított feladatot a cancel() metódus hívásával az operáción. Fontos azonban megérteni, hogy a cancel() hívása nem állítja meg azonnal az operációt — csak beállít egy törlésjelzőt. A feladatának rendszeresen ellenőriznie kell az isCancelled tulajdonságot, és helyesen be kell fejezni, ha az operációt törölték.
Példa:
class MyOperation: Operation {
override func main() {
for i in 0..<1000 {
if isCancelled {
print("Operáció törölve")
return
}
// Feladat végrehajtása
print(i)
}
}
}
let operation = MyOperation()
operationQueue.addOperation(operation)
// Később
operation.cancel() // A művelet törlésének kísérlete
Ezért a törlés egy együttműködő művelet, és az operációnak rendszeresen ellenőriznie kell a törlési zászlót a helyes megszakításhoz.