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čtuenter(). - 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í.