Junior — Middle
Можеш ли да изброиш и обясниш основните методи за работа с DispatchGroup в iOS?
sobes.tech AI
Отговор от AI
DispatchGroup в iOS се използва за групиране на няколко асинхронни задачи и проследяване на тяхното завършване. Основните методи и начини за работа с DispatchGroup:
- enter() — информира групата, че е започнала нова задача. Трябва да се извика, ако задачата се стартира ръчно и не чрез
group.async. - leave() — информира групата, че задачата е завършила. Броят на извикванията на
leave()трябва да съответства на броя наenter(). - notify(queue: DispatchQueue, execute: () -> Void) — задава блок код, който ще се изпълни на посочената опашка след като всички задачи в групата приключат.
- wait(timeout:) — синхронно изчаква завършването на всички задачи в групата или до изтичане на тайм-аут.
Пример за използване:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Асимптронна задача 1
print("Задача 1 започна")
sleep(2)
print("Задача 1 приключи")
group.leave()
}
group.enter()
queue.async {
// Асимптронна задача 2
print("Задача 2 започна")
sleep(1)
print("Задача 2 приключи")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Всички задачи са приключили")
}
В този пример две задачи се изпълняват паралелно, а след тяхното приключване се извиква блокът в notify. Този подход позволява удобно синхронизиране на няколко асинхронни операции.