Sobes.tech
Junior — Middle

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.