Junior — Middle
Μπορείς να απαριθμήσεις και να εξηγήσεις τις βασικές μεθόδους εργασίας με το DispatchGroup στο iOS;
sobes.tech AI
Απάντηση από AI
Το DispatchGroup στο iOS χρησιμοποιείται για την ομαδοποίηση πολλαπλών ασύγχρονων εργασιών και την παρακολούθηση της ολοκλήρωσής τους. Οι βασικές μέθοδοι και τρόποι εργασίας με το DispatchGroup:
- enter() — ενημερώνει την ομάδα ότι ξεκίνησε μια νέα εργασία. Πρέπει να καλείται αν η εργασία ξεκινά χειροκίνητα και όχι μέσω
group.async. - leave() — ενημερώνει την ομάδα ότι η εργασία έχει ολοκληρωθεί. Ο αριθμός των κλήσεων
leave()πρέπει να ταιριάζει με τον αριθμό τωνenter(). - notify(queue: DispatchQueue, execute: () -> Void) — ορίζει ένα μπλοκ κώδικα που θα εκτελεστεί στην καθορισμένη ουρά αφού όλες οι εργασίες στην ομάδα ολοκληρωθούν.
- wait(timeout:) — περιμένει συγχρονικά να ολοκληρωθούν όλες οι εργασίες στην ομάδα ή μέχρι να λήξει ο χρόνος αναμονής.
Παράδειγμα χρήσης:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Ασύγχρονη εργασία 1
print("Εργασία 1 ξεκίνησε")
sleep(2)
print("Εργασία 1 ολοκληρώθηκε")
group.leave()
}
group.enter()
queue.async {
// Ασύγχρονη εργασία 2
print("Εργασία 2 ξεκίνησε")
sleep(1)
print("Εργασία 2 ολοκληρώθηκε")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Όλες οι εργασίες ολοκληρώθηκαν")
}
Σε αυτό το παράδειγμα, δύο εργασίες εκτελούνται παράλληλα, και μετά την ολοκλήρωσή τους, καλείται το μπλοκ στο notify. Αυτή η προσέγγιση επιτρέπει την εύκολη συγχρονισμό πολλαπλών ασύγχρονων λειτουργιών.