Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce que signifie l'utilisation d'une référence faible à self dans les closures?

sobes.tech IA

Réponse de l'IA

L'utilisation d'une référence faible (weak reference) à self dans les closures en iOS (Swift) aide à éviter les cycles de rétention (retain cycles), qui conduisent à des fuites de mémoire. Lorsqu'un closure capture self comme une référence forte, et que self contient ce closure, ils se retiennent mutuellement, et la mémoire n'est pas libérée.

Exemple:

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

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

    func doSomething() {
        print("Action")
    }
}

Ici, [weak self] signifie que dans le closure, self sera une référence faible, et si l'objet est détruit, la référence deviendra nil, évitant ainsi la fuite de mémoire.