Sobes.tech
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 al enter().
  • 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.