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.asynckaudu. - leave() — teavitab gruppi, et ülesanne on lõpetatud.
leave()kutsumiste arv peaks vastamaenter()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.