2010-05-20 4 views
0

j'ai un UIImageView de 1024x768 (la salle de mon jeu) et d'autres divers UIIMageView dessus (l'objet de mon jeu).
L'écran de l'iPhone est plus petit que la pièce (UIImageView 1024x768) .. je veux comprendre si le système de l'iPhone intercepte automatiquement les éléments graphiques en dehors de la zone visible de la pièce (vue du lecteur) et décharger temporairement (optimisation mémoire) doit le faire à la main ??IPhone question sur UIImageView gestion de la mémoire

grâce

Répondre

1

La mémoire du UIImageView est toujours en mémoire aussi longtemps que vous le conserver. Autant que je sache, l'iPhone ne décharge pas automatiquement la mémoire utilisée par une UIImageView si elle est en dehors des limites de l'écran. Vous devrez le gérer vous-même en vous assurant d'appeler removeFromSuperview sur le UIImageView si ce n'est pas sur l'écran, et en l'ajoutant quand il sera à l'écran.

Si vous avez beaucoup d'images que vous souhaitez superposer et déplacer, vous pouvez consulter CALayer.

+0

En ajoutant à cela, un bon moment pour décharger les images hors écran est dans didReceiveMemoryWarning. Vous pouvez aussi garder tout en mémoire cache jusqu'à ce que cela soit appelé. – alltom

+1

si j'appelle manuellement removeFromSuperview si UIImageView il est en dehors des limites de l'écran ont un gain réel (continuellement ajouter/supprimer de superview sur le mouvement de vue du joueur sont coûteux CPU) ?? et le meilleur removeFromSuperview ou hidden = true ?? la dernière question .. maintenir dans la chambre tout le UIImageView (un pour un sprite) est CPU ou GPU coûteux? – BQuadra

+0

Je n'ai pas fait de tests instrumentés donc je ne sais pas. Je lancerais le logiciel tel quel et je ferais fonctionner Instruments avec le CPU Sampler pour m'assurer que l'utilisation de la mémoire et le temps CPU ne poseraient pas de problème, et si c'est le cas, trouver où le réparer. Mon conseil n'est pas d'optimiser prématurément, et de le faire sur la base de données réelles et non sur des règles empiriques, sauf si vous avez déjà beaucoup d'expérience. – lucius

Questions connexes