iOS - Gestion de la mémoire

La gestion de la mémoire sous iOS était initialement non-ARC (Automatic Reference Counting), où nous devons conserver et libérer les objets. Maintenant, il prend en charge ARC et nous n'avons pas besoin de conserver et de libérer les objets. Xcode prend en charge le travail automatiquement au moment de la compilation.

Problèmes de gestion de la mémoire

Selon la documentation Apple, les deux principaux problèmes de gestion de la mémoire sont:

  • Libération ou écrasement des données encore utilisées. Cela provoque une corruption de la mémoire et entraîne généralement le plantage de votre application ou, pire encore, des données utilisateur corrompues.

  • Ne pas libérer des données qui ne sont plus utilisées entraîne des fuites de mémoire. Lorsque la mémoire allouée n'est pas libérée même si elle ne sera plus jamais utilisée, on parle de fuite de mémoire. Les fuites font que votre application utilise des quantités de mémoire toujours plus importantes, ce qui peut à son tour entraîner de mauvaises performances du système ou (sous iOS) l'arrêt de votre application.

Règles de gestion de la mémoire

  • Nous possédons les objets que nous créons et nous devons les libérer par la suite lorsqu'ils ne sont plus nécessaires.

  • Utilisez Conserver pour acquérir la propriété d'un objet que vous n'avez pas créé. Vous devez également libérer ces objets lorsqu'ils ne sont pas nécessaires.

  • Ne relâchez pas les objets que vous ne possédez pas.

Gestion de la mémoire dans ARC

Vous n'avez pas besoin d'utiliser la version et la conservation dans ARC. Ainsi, tous les objets du contrôleur de vue seront libérés lorsque le contrôleur de vue est supprimé. De même, les sous-objets de tout objet seront libérés lorsqu'ils le seront. Notez que si d'autres classes ont une référence forte à un objet d'une classe, alors la classe entière ne sera pas libérée. Il est donc recommandé d'utiliser des propriétés faibles pour les délégués.

Outils de gestion de la mémoire

Nous pouvons analyser l'utilisation de la mémoire à l'aide d'instruments de l'outil Xcode. Il comprend des outils tels que le moniteur d'activité, les allocations, les fuites, les zombies, etc.

Étapes d'analyse des allocations de mémoire

Step 1 - Ouvrez une application existante.

Step 2 - Sélectionnez Produit puis Profil comme indiqué ci-dessous.

Step 3 - Sélectionnez Allocations dans l'écran suivant illustré ci-dessous et sélectionnez Profil.

Step 4 - Nous verrons l'allocation de mémoire pour différents objets comme indiqué ci-dessous.

Step 5 - Vous pouvez basculer entre les contrôleurs de vue et vérifier si la mémoire est libérée correctement.

Step 6 - De même, au lieu d'allocations, nous pouvons utiliser Activity Monitor pour voir la mémoire globale allouée à l'application.

Step 7 - Ces outils nous aident à accéder à notre consommation de mémoire et à localiser les endroits où des fuites éventuelles se sont produites.