Junior — Middle
Μπορείτε να εξηγήσετε τι σημαίνει η σημείωση @escaping στο Swift;
sobes.tech AI
Απάντηση από AI
Η επισήμανση @escaping στη Swift χρησιμοποιείται για να δηλώσει ότι μια κλείσιμο (closure) που περνάει σε μια συνάρτηση μπορεί να κληθεί μετά το τέλος της ίδιας της συνάρτησης. Αυτό είναι σημαντικό όταν το κλείσιμο αποθηκεύεται και καλείται ασύγχρονα, για παράδειγμα, σε callbacks αιτημάτων δικτύου.
Χωρίς @escaping, το κλείσιμο θεωρείται μη-εξαφανιζόμενο (non-escaping), δηλαδή πρέπει να καλείται μέσα στο σώμα της συνάρτησης και δεν μπορεί να αποθηκευτεί για μελλοντική κλήση.
Παράδειγμα:
func fetchData(completion: @escaping () -> Void) {
DispatchQueue.global().async {
// Ασύγχρονη εργασία
completion() // κλήση του κλεισίματος μετά την έξοδο από το fetchData
}
}
Εδώ, το completion σημειώνεται ως @escaping επειδή καλείται ασύγχρονα μετά την έξοδο από το fetchData.