Sobes.tech
Junior — Middle

Kas saaksid loetleda ja selgitada DispatchGroupiga iOS-is töötamise põhimeetodeid?

sobes.tech AI

Vastus AI-lt

DispatchGroup iOS-is kasutatakse mitme asünkroonse ülesande grupeerimiseks ja nende lõpetamise jälgimiseks. Peamised meetodid ja viisid DispatchGroup-iga töötamiseks:

  • enter() — teavitab gruppi, et uus ülesanne on alanud. Seda tuleb kutsuda, kui ülesanne algab käsitsi ja mitte group.async kaudu.
  • leave() — teavitab gruppi, et ülesanne on lõpetatud. leave() kutsumiste arv peaks vastama enter() arvule.
  • notify(queue: DispatchQueue, execute: () -> Void) — määrab koodiploki, mis käivitatakse määratud järjekorras pärast kõigi grupi ülesannete lõpetamist.
  • wait(timeout:) — ootab sünkroonselt, kuni kõik grupi ülesanded on lõpetatud või aeg on otsa saanud.

Kasutusnäide:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Asünkroonne ülesanne 1
    print("Ülesanne 1 algas")
    sleep(2)
    print("Ülesanne 1 lõpetas")
    group.leave()
}

group.enter()
queue.async {
    // Asünkroonne ülesanne 2
    print("Ülesanne 2 algas")
    sleep(1)
    print("Ülesanne 2 lõpetas")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Kõik ülesanded on lõpetatud")
}

Selles näites töötavad kaks ülesannet paralleelselt ning nende lõpetamisel kutsutakse välja notify blokk. See lähenemine võimaldab mugavalt sünkroniseerida mitmeid asünkroonseid operatsioone.