Sobes.tech
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.async orqali emas, uni chaqirish kerak.
  • leave() — guruhga vazifa yakunlanganini bildiradi. leave() chaqirishlarining soni enter() 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.