Junior — Middle
Puoi elencare e spiegare i metodi principali per lavorare con DispatchGroup in iOS?
sobes.tech AI
Risposta dell'AI
DispatchGroup in iOS viene utilizzato per raggruppare più task asincroni e monitorarne il completamento. I metodi principali e le modalità di utilizzo di DispatchGroup:
- enter() — informa il gruppo che è iniziato un nuovo task. Deve essere chiamato se il task viene avviato manualmente e non tramite
group.async. - leave() — informa il gruppo che il task è terminato. Il numero di chiamate a
leave()deve corrispondere a quello dienter(). - notify(queue: DispatchQueue, execute: () -> Void) — imposta un blocco di codice che verrà eseguito sulla coda specificata dopo che tutti i task nel gruppo sono stati completati.
- wait(timeout:) — aspetta in modo sincrono che tutti i task nel gruppo siano terminati o che scada il timeout.
Esempio di utilizzo:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Task asincrono 1
print("Task 1 avviato")
sleep(2)
print("Task 1 terminato")
group.leave()
}
group.enter()
queue.async {
// Task asincrono 2
print("Task 2 avviato")
sleep(1)
print("Task 2 terminato")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Tutti i task sono stati completati")
}
In questo esempio, due task vengono eseguiti in parallelo, e dopo il loro completamento, viene chiamato il blocco in notify. Questo approccio permette di sincronizzare facilmente più operazioni asincrone.