Junior — Middle
Czy możesz wymienić i wyjaśnić główne metody pracy z DispatchGroup w iOS?
sobes.tech AI
Odpowiedź od AI
DispatchGroup w iOS służy do grupowania wielu zadań asynchronicznych i śledzenia ich zakończenia. Główne metody i sposoby pracy z DispatchGroup:
- enter() — informuje grupę, że rozpoczęło się nowe zadanie. Należy wywołać, jeśli zadanie jest uruchamiane ręcznie i nie przez
group.async. - leave() — informuje grupę, że zadanie zostało zakończone. Liczba wywołań
leave()powinna odpowiadać liczbieenter(). - notify(queue: DispatchQueue, execute: () -> Void) — ustawia blok kodu, który zostanie wykonany na wskazanej kolejce po zakończeniu wszystkich zadań w grupie.
- wait(timeout:) — oczekuje synchronicznie na zakończenie wszystkich zadań w grupie lub do upływu czasu oczekiwania.
Przykład użycia:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Zadanie asynchroniczne 1
print("Zadanie 1 rozpoczęte")
sleep(2)
print("Zadanie 1 zakończone")
group.leave()
}
group.enter()
queue.async {
// Zadanie asynchroniczne 2
print("Zadanie 2 rozpoczęte")
sleep(1)
print("Zadanie 2 zakończone")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Wszystkie zadania zakończone")
}
W tym przykładzie dwa zadania wykonują się równolegle, a po ich zakończeniu wywoływany jest blok w notify. Taki sposób pozwala wygodnie synchronizować kilka operacji asynchronicznych.