Sobes.tech
Junior — Middle

Πότε είναι κατάλληλο να χρησιμοποιήσετε μια αδύναμη αναφορά με το 'weak let';

sobes.tech AI

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

Η αδύναμη αναφορά με weak let στη Swift χρησιμοποιείται για την αποτροπή κύκλων ισχυρών αναφορών (κύκλων διατήρησης), ειδικά σε closures και delegates. Είναι κατάλληλη όταν το αντικείμενο στο οποίο αναφέρεται μπορεί να αποδεσμευτεί, και δεν θέλετε να το διατηρείτε στη μνήμη.

Για παράδειγμα, σε ένα closure που καταγράφει το self, για να αποφύγετε διαρροές μνήμης, γίνεται μια αδύναμη αναφορά:

class ViewController {
    var closure: (() -> Void)?

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

    func doSomething() {
        print("Ενέργεια")
    }
}

Εδώ, το weak αποτρέπει τη διατήρηση του self από το closure, επιτρέποντας στο ViewController να απελευθερωθεί από τη μνήμη όταν δεν είναι πλέον απαραίτητο.