Sobes.tech
Junior — Middle

Môžeš uviesť a vysvetliť hlavné metódy práce s DispatchGroup v iOS?

sobes.tech AI

Odpoveď od AI

DispatchGroup v iOS sa používa na zoskupovanie viacerých asynchrónnych úloh a sledovanie ich dokončenia. Hlavné metódy a spôsoby práce s DispatchGroup:

  • enter() — informuje skupinu, že začala nová úloha. Mal by sa volať, ak sa úloha spúšťa manuálne a nie cez group.async.
  • leave() — informuje skupinu, že úloha bola dokončená. Počet volaní leave() by mal zodpovedať počtu enter().
  • notify(queue: DispatchQueue, execute: () -> Void) — nastaví blok kódu, ktorý sa vykoná na určenom fronte po dokončení všetkých úloh v skupine.
  • wait(timeout:) — synchronne čaká na dokončenie všetkých úloh v skupine alebo do uplynutia časového limitu.

Príklad použitia:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Asynchrónna úloha 1
    print("Úloha 1 začala")
    sleep(2)
    print("Úloha 1 ukončená")
    group.leave()
}

group.enter()
queue.async {
    // Asynchrónna úloha 2
    print("Úloha 2 začala")
    sleep(1)
    print("Úloha 2 ukončená")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Všetky úlohy sú ukončené")
}

V tomto príklade sa dve úlohy vykonávajú paralelne, a po ich dokončení sa volá blok v notify. Tento prístup umožňuje jednoduchú synchronizáciu viacerých asynchrónnych operácií.