Pourquoi dois-je pas eu des problèmes de mémoire insuffisante jusqu'à ce que les images sont dessiner sur l'écran?

StackOverflow https://stackoverflow.com/questions/2917772

Question

Je suis en mesure de charger plus de 200 objets UIImage dans un NSMutableDictionary sans aucun problème d'avertissement memorry.

Quand je commence à les afficher sur l'écran (après environ 10-20 montrant des images) Je reçois des avertissements peu de mémoire et un accident éventuel.

Seulement 8 images sont affichées au moment de la personne.

Faut-il la mémoire supplémentaire pour tirer effectivement un UIImage sur l'écran?

Aucune fuite de mémoire et font leur apparition que j'ai le code revue des fuites nombreuses fois.

Était-ce utile?

La solution

La documentation dit que d'avoir un UIImage ne signifie pas nécessairement que l'image est stocké dans la mémoire, car il pourrait être purgé du cache d'image. Mais il ne dit que si vous essayez de le dessiner, il sera tiré vers l'arrière dans la mémoire. Peut-être qu'il commence à purger de son cache d'image avant qu'il ne vous met en garde contre la condition de mémoire. Cela explique tout ce que vous voyez.

Autres conseils

Son probable que vous créez d'abord un lien vers l'image, les seules données qui est réellement lu à ce moment sont les dimensions et le type d'image (en bref), le reste des données est généralement pas nécessaire jusqu'à ce que la demande habituellement d'un arrière-plan processus par exemple affiché à l'écran. Quand il apparaît que les données d'image réelle est téléchargée à partir du filepath et décodé en fonction de son type d'image, il est alors mis en cache donc il ne doit pas être téléchargé à nouveau, la mise en cache prend beaucoup de mémoire, plus si vous utilisez double / triple mise en mémoire tampon, il y a la mémoire supplémentaire nécessaire pour le dessin hors écran. Essayez disposer de toutes les données d'image avant de charger de nouvelles images.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top