Sobes.tech
Junior — Middle

Můžeš vyjmenovat a vysvětlit hlavní metody práce s DispatchGroup v iOS?

sobes.tech AI

Odpověď od AI

V iOS se DispatchGroup používá k seskupování několika asynchronních úkolů a sledování jejich dokončení. Hlavní metody a způsoby práce s DispatchGroup:

  • enter() — informuje skupinu, že začal nový úkol. Mělo by být voláno, pokud je úkol spuštěn ručně a ne přes group.async.
  • leave() — informuje skupinu, že úkol byl dokončen. Počet volání leave() by měl odpovídat počtu volání enter().
  • notify(queue: DispatchQueue, execute: () -> Void) — nastaví blok kódu, který bude spuštěn na specifikované frontě po dokončení všech úkolů ve skupině.
  • wait(timeout:) — synchronně čeká na dokončení všech úkolů ve skupině nebo do vypršení časového limitu.

Příklad použití:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Asynchronní úkol 1
    print("Úkol 1 začal")
    sleep(2)
    print("Úkol 1 dokončen")
    group.leave()
}

group.enter()
queue.async {
    // Asynchronní úkol 2
    print("Úkol 2 začal")
    sleep(1)
    print("Úkol 2 dokončen")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Všechny úkoly jsou dokončené")
}

V tomto příkladu jsou dva úkoly spuštěny paralelně a po jejich dokončení je volán blok v notify. Tento přístup umožňuje snadno synchronizovat několik asynchronních operací.