Sobes.tech
Junior — Middle

Qu'est-ce qu'une perte de mémoire allouée et comment peut-elle survenir dans une application?

sobes.tech IA

Réponse de l'IA

Une fuite de mémoire dans une application iOS est une situation où l’application continue de conserver des références à des objets qui ne sont plus nécessaires, ce qui empêche la mémoire de se libérer et entraîne une consommation accrue de ressources au fil du temps.

Causes :

  • Cycles de références (retain cycles) entre objets, en particulier lors de l’utilisation de ARC (Automatic Reference Counting).
  • Utilisation de closures avec capture de self sans références faibles (weak/self).
  • Gestion incorrecte des ressources, par exemple, ne pas libérer les délégués.

Exemple de cycle de rétention avec une closure :

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = {
            print(self) // capture de self sans weak
        }
    }
}

Pour l’éviter, il faut utiliser [weak self] :

closure = { [weak self] in
    guard let self = self else { return }
    print(self)
}

L’analyse régulière avec les outils Xcode (Instruments — Leaks) aide à détecter et à éliminer les fuites de mémoire.