Sobes.tech
Junior — Middle

Pourquoi utilise-t-on des références faibles et fortes en programmation, et en quoi diffèrent-elles?

sobes.tech IA

Réponse de l'IA

En programmation, en particulier dans la gestion de la mémoire, des références fortes (strong) et faibles (weak) sont utilisées pour contrôler le cycle de vie des objets et prévenir les fuites de mémoire.

  • Référence forte maintient l'objet en mémoire tant qu'il existe au moins une référence forte. Le ramasse-miettes ne supprimera pas l'objet.
  • Référence faible n'empêche pas la suppression de l'objet. Si seules des références faibles restent, il peut être libéré de la mémoire.

Ceci est important pour éviter les références cycliques, lorsque deux objets se réfèrent mutuellement par des références fortes, et que le ramasse-miettes ne peut pas les supprimer. Dans de tels cas, l'une des références devient faible.

Exemple en Swift:

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

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

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john

Ici, apartment est une référence faible pour éviter un cycle de rétention entre Person et Apartment.