Comment la mémoire occupée par un objet dans un programme est-elle libérée?
sobes.tech IA
Réponse de l'IA
En iOS, la libération de mémoire se produit principalement automatiquement grâce au système ARC (Automatic Reference Counting). Chaque objet a un compteur de références, qui augmente lors de la création d'une nouvelle référence forte et diminue lors de sa suppression. Lorsque le compteur atteint zéro, l'objet est automatiquement détruit et la mémoire est libérée.
Si dans le code apparaissent des références cycliques (par exemple, deux objets avec des références fortes l'un à l'autre), la mémoire n'est pas libérée. Pour résoudre ce problème, on utilise des références faibles (weak) ou sans propriétaire (unowned).
Exemple:
class Person {
var name: String
weak var apartment: Apartment? // référence faible pour éviter le cycle
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // référence sans propriétaire
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
Ainsi, la libération de mémoire se produit automatiquement si les références sont gérées correctement.