2010-07-19 2 views
1

Je suis novice en programmation (j'ai appris à écrire des applications il y a quelques mois) et j'ai récemment écrit une application qui se bloque après 5 minutes avec plusieurs 'Avertissement de mémoire reçu. Niveau = 1 'avertissements. Pendant les tests avec des instruments, je n'ai pas pu détecter de fuites et je suis assez confiant que je libère les objets correctement, donc je suspecte que les problèmes de mémoire proviennent du grand nombre d'images png que j'utilise (environ 80). J'ai essayé de passer de la méthode -imageNamed à -imageWithContentsOfFile et je n'ai vu aucune réelle amélioration. Si quelqu'un pouvait offrir des conseils, je l'apprécierais vraiment car je suis complètement coincé.Mon application iPhone a des problèmes de mémoire et éventuellement des plantages - utilise beaucoup d'images

+0

Merci pour les réponses! J'ai essayé de réduire un peu mon utilisation de l'image et je ne pense vraiment pas pouvoir couper plus sans vraiment réduire la qualité de l'application. Cependant, je reçois toujours des avertissements de mémoire, puis un crash éventuel. Ce qui m'embrouille, c'est que je n'ai pas de crash avant le 15ème niveau de mon jeu et qu'il n'y a pas de nouvelles images introduites entre les niveaux. Je n'ai toujours pas trouvé de fuite (j'ai utilisé des instruments et NSZombiesEnabled) donc je ne pense pas que ce soit le problème. Se pourrait-il que je ne pousse pas mes contrôleurs de vue à droite ou quelque chose? Je suis perplexe .... Merci encore pour toute aide. – mohabster1928

+1

N'était-ce pas le but de 'NSZombies' que la mémoire ne soit en fait * pas * restituée pour que le zombie puisse se plaindre qu'il soit appelé après le dealloc officiel? Cela expliquerait les avertissements de la mémoire. Le moyen de résoudre cette classe de problèmes consiste à placer une partie du code dans une boucle, par ex. faites le * même * niveau 100 fois, et voyez si l'empreinte mémoire augmente chaque fois que vous faites ce même niveau. – mvds

Répondre

0

Un manque de mémoire ne signifie pas nécessairement implique des fuites de mémoire. Cela pourrait signifier que vous avez demandé trop de mémoire à la fois. Dans votre cas, vous essayez probablement de créer plusieurs objets UIImage qui existent tous simultanément. Sans voir beaucoup plus de votre code, il n'y a pas grand chose à dire, sauf essayer de trouver un moyen d'utiliser moins d'images en même temps.

0

Supposé UIImage que vous chargez en utilisant imageNamed déchargez leur contenu si possible, s'ils reçoivent des avertissements de mémoire. UIImage Reference, see Images and Memory Management Cela ne laisserait qu'un très petit conteneur vide UIImage. Donc, je soupçonne que vous avez un autre problème.

Vérifiez la présence d'une boucle dans votre programme et assurez-vous qu'elle ne fuit pas d'une manière ou d'une autre.

0

Notez également que les fichiers PNG sur le disque sont beaucoup plus petits que l'image correspondante en mémoire. Si vos fichiers PNG sont volumineux, vous pourriez utiliser trop de mémoire. vous pouvez peut-être retarder le chargement d'images pour réduire votre empreinte.

Questions connexes