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.