Sobes.tech
Junior

À quoi servent les références faibles dans le langage de programmation Swift?

sobes.tech IA

Réponse de l'IA

Les références faibles (weak references) en Swift sont utilisées pour éviter les cycles de références fortes (strong reference cycles), qui peuvent entraîner des fuites de mémoire. Dans le système de comptage automatique de références (ARC), les objets sont maintenus en mémoire tant qu'ils ont des références fortes. Si deux objets se réfèrent mutuellement par des références fortes, ils ne seront jamais libérés.

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 sera libéré et la référence faible sera automatiquement mise à nil. Cela est particulièrement utile lors de l'utilisation de délégués, de closures et d'objets interconnectés.

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

class Person {
    var name: String
    weak var apartment: Apartment? // référence faible
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    var tenant: Person? // référence forte
    init(unit: String) {
        self.unit = unit
    }
}

var john: Person? = Person(name: "John")
var unit4A: Apartment? = Apartment(unit: "4A")

john?.apartment = unit4A
unit4A?.tenant = john

john = nil // l'objet Person sera libéré, car apartment est une référence faible
unit4A = nil

Ainsi, les références faibles aident à éviter les fuites de mémoire en rompant les cycles de références fortes.