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.