Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε την έννοια της Capture List στο πλαίσιο της γλώσσας Swift και της εφαρμογής της;

sobes.tech AI

Απάντηση από AI

Στη Swift, η Capture List είναι ένας μηχανισμός που επιτρέπει τον έλεγχο του τρόπου με τον οποίο μια κλείδωση (closure) αιχμαλωτίζει μεταβλητές από το περιβάλλον, ειδικά για τη διαχείριση μνήμης και την αποτροπή κύκλων διατήρησης.

Η Capture List γράφεται μέσα σε τετράγωνα αγκύλες πριν από το σώμα της κλείδωσης και υποδεικνύει πώς να αιχμαλωτίζονται οι μεταβλητές: με ισχυρή αναφορά (strong), αδύναμη (weak) ή χωρίς ιδιοκτήτη (unowned).

Παράδειγμα:

class ViewController {
    var name = "Main"

    func setup() {
        let closure = { [weak self] in
            guard let self = self else { return }
            print(self.name)
        }
        closure()
    }
}

Εδώ, το [weak self] αποτρέπει έναν ισχυρό κύκλο διατήρησης μεταξύ της κλείδωσης και του αντικειμένου self, κάτι που είναι σημαντικό για την σωστή απελευθέρωση της μνήμης.

Έτσι, η Capture List βοηθά στη διαχείριση του κύκλου ζωής των αντικειμένων μέσα στις κλείδωσεις και στην αποφυγή διαρροών μνήμης.