Junior — Middle
Felsorolnád és elmagyaráznád az iOS-ben a DispatchGroup fő módszereit?
sobes.tech MI
Válasz az MI-től
A DispatchGroup az iOS-ben több aszinkron feladat csoportosítására és azok befejezésének nyomon követésére szolgál. A DispatchGroup főbb módszerei és használati módjai:
- enter() — értesíti a csoportot, hogy egy új feladat kezdődött. Hívni kell, ha a feladat kézzel indult, és nem a
group.asyncsegítségével. - leave() — értesíti a csoportot, hogy a feladat befejeződött. A
leave()hívások száma meg kell egyezzen aenter()hívások számával. - notify(queue: DispatchQueue, execute: () -> Void) — beállít egy kódrészletet, amely a megadott sorban fut le, miután az összes feladat a csoportban befejeződött.
- wait(timeout:) — szinkron módon várja, hogy az összes feladat befejeződjön, vagy amíg a timeout lejár.
Használati példa:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Aszinkron feladat 1
print("Feladat 1 indult")
sleep(2)
print("Feladat 1 befejeződött")
group.leave()
}
group.enter()
queue.async {
// Aszinkron feladat 2
print("Feladat 2 indult")
sleep(1)
print("Feladat 2 befejeződött")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Minden feladat befejeződött")
}
Ebben a példában két feladat párhuzamosan fut, és azok befejezése után a notify blokk hívódik meg. Ez a megközelítés könnyen szinkronizál több aszinkron műveletet.