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í.