Junior — Middle
Comment et dans quels cas utilise-t-on des références faibles à l'intérieur des closures?
sobes.tech IA
Réponse de l'IA
Lors de l’utilisation de closures en iOS, il arrive souvent de rencontrer des problèmes de références cycliques, lorsque un objet capture le closure et que le closure capture l’objet, ce qui entraîne des fuites de mémoire. Pour éviter cela, on utilise des références faibles (weak references) à l’intérieur des closures.
Une référence faible n’augmente pas le compteur de références de l’objet, donc si aucune référence forte n’existe, l’objet peut être libéré.
Exemple d’utilisation d’une référence faible dans un closure :
class ViewController {
var completionHandler: (() -> Void)?
func setup() {
completionHandler = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action effectuée")
}
}
Cas d’utilisation :
- Lorsque le closure capture self ou d’autres objets pour éviter un cycle de rétention.
- Dans des opérations asynchrones, où l’objet peut être détruit avant l’exécution du closure.
L’utilisation de références faibles aide à gérer la mémoire et à prévenir les fuites.