Sobes.tech
Junior — Middle

Quelle est la différence entre les types de références Strong et Weak dans la gestion de la mémoire et le modèle de référence?

sobes.tech IA

Réponse de l'IA

Une référence forte est une référence normale forte à un objet, qui augmente le compteur de références (compte de rétention) de cet objet. Tant qu'il existe au moins une référence forte, l'objet ne sera pas supprimé de la mémoire.

Une référence faible est une référence faible, qui n'augmente pas le compteur de références de l'objet. Elle est utilisée pour éviter les cycles de rétention. Si l'objet auquel la référence faible fait référence est supprimé, la référence faible devient automatiquement nil.

Exemple en Swift:

class Person {
    var name: String
    init(name: String) { self.name = name }
    var apartment: Apartment?
}

class Apartment {
    let unit: String
    weak var tenant: Person?  // référence faible pour éviter le cycle
    init(unit: String) { self.unit = unit }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john  // référence faible

Ici, la référence faible tenant ne retient pas l'objet Person, ce qui permet d'éviter les fuites de mémoire.