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.