Junior — Middle
Poți enumera și explica principalele metode de lucru cu DispatchGroup în iOS?
sobes.tech AI
Răspuns de la AI
DispatchGroup în iOS este utilizat pentru a grupa mai multe sarcini asincrone și pentru a urmări finalizarea acestora. Metodele principale și modalitățile de lucru cu DispatchGroup:
- enter() — informează grupul că a început o nouă sarcină. Trebuie apelat dacă sarcina este inițiată manual și nu prin
group.async. - leave() — informează grupul că sarcina s-a încheiat. Numărul de apeluri
leave()trebuie să corespundă cu cel alenter(). - notify(queue: DispatchQueue, execute: () -> Void) — stabilește un bloc de cod care va fi executat pe coada specificată după ce toate sarcinile din grup s-au finalizat.
- wait(timeout:) — așteaptă sincron ca toate sarcinile din grup să fie finalizate sau până expiră timeout-ul.
Exemplu de utilizare:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Sarcină asincronă 1
print("Sarcina 1 a început")
sleep(2)
print("Sarcina 1 s-a terminat")
group.leave()
}
group.enter()
queue.async {
// Sarcină asincronă 2
print("Sarcina 2 a început")
sleep(1)
print("Sarcina 2 s-a terminat")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Toate sarcinile au fost finalizate")
}
În acest exemplu, două sarcini rulează în paralel, iar după finalizarea lor, se apelează blocul din notify. Această abordare permite sincronizarea ușoară a mai multor operații asincrone.