Sobes.tech
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.