Junior — Middle
Siz iOS'da DispatchGroup bilan ishlashning asosiy usullarini sanab o'tishingiz va tushuntirishingiz mumkinmi?
sobes.tech AI
AIdan javob
iOS-da DispatchGroup bir nechta asinxron vazifalarni guruhlash va ularning yakunlanishini kuzatish uchun ishlatiladi. DispatchGroup bilan ishlashning asosiy metodlari va usullari:
- enter() — guruhga yangi vazifa boshlangani haqida xabar beradi. Agar vazifa qo'lda boshlanayotgan bo'lsa va
group.asyncorqali emas, uni chaqirish kerak. - leave() — guruhga vazifa yakunlanganini bildiradi.
leave()chaqirishlarining sonienter()soniga mos kelishi kerak. - notify(queue: DispatchQueue, execute: () -> Void) — guruhdagi barcha vazifalar yakunlangach, belgilangan navbatda bajariladigan kod blokini o'rnatadi.
- wait(timeout:) — guruhdagi barcha vazifalar yakunlanishini yoki timeout o'tishini sinxron tarzda kutadi.
Foydalanish misoli:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Asinxron vazifa 1
print("Vazifa 1 boshlandi")
sleep(2)
print("Vazifa 1 yakunlandi")
group.leave()
}
group.enter()
queue.async {
// Asinxron vazifa 2
print("Vazifa 2 boshlandi")
sleep(1)
print("Vazifa 2 yakunlandi")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Barcha vazifalar yakunlandi")
}
Ushbu misolda, ikkita vazifa parallel ravishda bajariladi, va ularning yakunidan so'ng, notify ichidagi blok chaqiriladi. Bu yondashuv bir nechta asinxron operatsiyalarni qulay tarzda sinxronlashtirish imkonini beradi.