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 даъват мешавад. Ин усул имкон медиҳад, ки чанд амали асинхрониро ба осонӣ ҳамоҳанг кард.