Sobes.tech
Junior — Middle

iOS-də DispatchGroup ilə işləmək üçün əsas metodları sadalaya və izah edə bilərsənmi?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da DispatchGroup bir neçə asinxron vəzifəni qruplaşdırmaq və onların tamamlanmasını izləmək üçün istifadə olunur. DispatchGroup ilə işləmək üçün əsas metodlar və üsullar:

  • enter() — qrupa yeni vəzifənin başladığını bildirir. Əgər vəzifə əl ilə başlayırsa və ya group.async vasitəsilə başlamırsa, çağırılmalıdır.
  • leave() — qrupa vəzifənin tamamlandığını bildirir. leave() çağırışlarının sayı enter() sayına uyğun olmalıdır.
  • notify(queue: DispatchQueue, execute: () -> Void) — qeyd olunan növbədə bütün vəzifələr tamamlandıqdan sonra icra olunacaq kod blokunu təyin edir.
  • wait(timeout:) — bütün vəzifələrin tamamlanmasını və ya vaxtın bitməsini sinxron şəkildə gözləyir.

İstifadə nümunəsi:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Asinxron vəzifə 1
    print("Vəzifə 1 başladı")
    sleep(2)
    print("Vəzifə 1 tamamlandı")
    group.leave()
}

group.enter()
queue.async {
    // Asinxron vəzifə 2
    print("Vəzifə 2 başladı")
    sleep(1)
    print("Vəzifə 2 tamamlandı")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Bütün vəzifələr tamamlandı")
}

Bu nümunədə iki vəzifə paralel şəkildə icra olunur və onların tamamlanmasından sonra notify içindəki blok çağırılır. Bu yanaşma bir neçə asinxron əməliyyatı asanlıqla sinxronlaşdırmağa imkan verir.