Sobes.tech
Junior — Middle

Pourquoi est-il recommandé d'utiliser une référence faible à soi-même (weak self) dans le code utilisant des closures?

sobes.tech IA

Réponse de l'IA

L'utilisation d'une référence faible (weak self) dans les closures est nécessaire pour éviter les cycles de références fortes (cycles de rétention), qui conduisent à des fuites de mémoire.

Lorsque le closure capture self comme une référence forte, et que self contient ce closure (par exemple, dans une propriété), ils se retiennent mutuellement, et aucun des objets n'est libéré.

Exemple d'utilisation d'une référence faible:

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

Ici, self est capturé faiblement, donc si l'objet self est détruit avant l'exécution du closure, celui-ci ne le retiendra pas en mémoire, évitant ainsi une fuite.