Sobes.tech
Junior — Middle

Pouvez-vous expliquer le mécanisme du ramasse-miettes en Swift et comment il gère la mémoire?

sobes.tech IA

Réponse de l'IA

En Swift, il n’y a pas de ramasse-miettes classique comme dans certains autres langages. À la place, un mécanisme de comptage automatique des références (ARC - Automatic Reference Counting) est utilisé.

ARC fonctionne ainsi : chaque objet en mémoire possède un compteur de références, qui augmente lors de la création d’une nouvelle référence à l’objet et diminue lorsque la référence est supprimée ou devient nil. Lorsque le compteur de références d’un objet atteint zéro, l’objet est automatiquement supprimé de la mémoire.

Exemple :

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

var person1: Person? = Person(name: "Иван")
var person2 = person1 // le compteur de références augmente
person1 = nil // le compteur diminue, mais l’objet reste en vie, car person2 y fait référence
person2 = nil // le compteur devient 0, et l’objet est supprimé

Ainsi, la gestion de la mémoire en Swift est automatique, sans besoin d’appeler manuellement un ramasse-miettes, ce qui améliore la performance et réduit le risque de fuites de mémoire si utilisé correctement.