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.asynckullanı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.