Sobes.tech
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 atitikti enter() 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.