Junior — Middle
Est-il possible de réaliser des fermetures faiblement liées dans un langage de programmation?
sobes.tech IA
Réponse de l'IA
Dans iOS (Swift, Objective-C), les closures sont généralement fortement liées au contexte dans lequel elles sont créées, capturant des variables et des objets. Cependant, il est possible d'implémenter des closures faiblement liées en utilisant des références faibles (weak) à l'intérieur de la closure pour éviter les cycles de rétention forts.
Exemple en Swift :
class MyClass {
var value = 10
func doSomething() {
let closure: () -> Void = { [weak self] in
guard let self = self else { return }
print(self.value)
}
closure()
}
}
Ici, self est capturé faiblement, ce qui permet d'éviter de retenir l'objet MyClass par la closure si l'objet a déjà été libéré.
Ainsi, les closures faiblement liées sont possibles et largement utilisées pour la gestion de la mémoire et la prévention des fuites.