Junior — Middle
Ar galite išvardyti ir paaiškinti pagrindinius metodus, kaip dirbti su DispatchGroup iOS?
sobes.tech AI
Atsakymas iš AI
„DispatchGroup“ iOS platformoje naudojamas kelių asinchroninių užduočių sugrupavimui ir jų užbaigimo stebėjimui. Pagrindiniai metodai ir darbo būdai su „DispatchGroup“:
- enter() — informuoja grupę, kad pradėta nauja užduotis. Reikia iškviesti, jei užduotis pradedama rankiniu būdu ir ne per
group.async. - leave() — informuoja grupę, kad užduotis baigta. Kviečiamų
leave()skaičius turi atitiktienter()skaičių. - notify(queue: DispatchQueue, execute: () -> Void) — nustato kodo bloką, kuris bus vykdomas nurodytoje eilėje po to, kai visi grupės užduotys bus užbaigtos.
- wait(timeout:) — sinchroniškai laukia, kol visi grupės užduotys bus užbaigtos arba pasibaigs laiko limitas.
Naudojimo pavyzdys:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Asinchroninė užduotis 1
print("Užduotis 1 pradėta")
sleep(2)
print("Užduotis 1 baigta")
group.leave()
}
group.enter()
queue.async {
// Asinchroninė užduotis 2
print("Užduotis 2 pradėta")
sleep(1)
print("Užduotis 2 baigta")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Visos užduotys baigtos")
}
Šiame pavyzdyje dvi užduotys vykdomos lygiagrečiai, o jų pabaigoje iškviečiamas notify blokas. Šis požiūris leidžia patogiai sinchronizuoti kelias asinchronines operacijas.