Sobes.tech
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.async segítségével.
  • leave() — értesíti a csoportot, hogy a feladat befejeződött. A leave() hívások száma meg kell egyezzen a enter() 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.