Sobes.tech
Junior — Middle

iOS'ta DispatchGroup ile çalışma yöntemlerini listeleyip açıklayabilir misin?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS'ta DispatchGroup, birden fazla asenkron görevi gruplamak ve tamamlanmalarını izlemek için kullanılır. DispatchGroup ile çalışma yöntemleri ve temel fonksiyonlar:

  • enter() — gruba yeni bir görevin başladığını bildirir. Bu, görev manuel olarak başlatılırsa ve group.async kullanılmazsa çağrılmalıdır.
  • leave() — görevin tamamlandığını gruba bildirir. leave() çağrılarının sayısı, enter() sayısıyla eşleşmelidir.
  • notify(queue: DispatchQueue, execute: () -> Void) — tüm görevler tamamlandıktan sonra belirtilen kuyrukta çalışacak kod bloğunu ayarlar.
  • wait(timeout:) — tüm görevlerin tamamlanmasını veya zaman aşımına ulaşılmasını senkron şekilde bekler.

Kullanım örneği:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Asenkron Görev 1
    print("Görev 1 başladı")
    sleep(2)
    print("Görev 1 tamamlandı")
    group.leave()
}

group.enter()
queue.async {
    // Asenkron Görev 2
    print("Görev 2 başladı")
    sleep(1)
    print("Görev 2 tamamlandı")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Tüm görevler tamamlandı")
}

Bu örnekte, iki görev paralel olarak çalışmakta ve tamamlandıklarında notify içindeki blok çağrılmaktadır. Bu yöntem, birkaç asenkron işlemi kolayca senkronize etmeyi sağlar.