Junior — Middle
Dans quelles circonstances doit-on utiliser une référence faible (weak) à l'intérieur d'une fermeture (closure) ?
sobes.tech IA
Réponse de l'IA
Les références faibles (weak) à l'intérieur des closures en iOS sont utilisées pour éviter les cycles de références fortes (cycles de rétention), qui peuvent entraîner des fuites de mémoire. Cela est généralement pertinent lorsque le closure capture un objet (par exemple, self) et est retenu par cet objet, créant une référence forte mutuelle.
Utilisez weak pour faire référence à self à l'intérieur du closure si le closure est stocké dans une propriété de l'objet ou peut vivre plus longtemps que l'appel de la fonction, afin d'éviter de retenir l'objet en mémoire après sa libération.
Exemple en Swift:
class ViewController {
var completion: (() -> Void)?
func setup() {
completion = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action effectuée")
}
}
Ici, [weak self] empêche un cycle fort entre ViewController et la closure completion.