2010-05-20 6 views
1

Je développe une application qui contient une fonctionnalité comme navigateur de photos par défaut dans l'iphone. J'ai fait un peu comme ça. mais après le chargement de certaines (environ 10-15) images du serveur distant, je reçois un avertissement de la mémoire. Mon besoin est de charger l'image un par un. Pour cela, en mode scroll, je mets des images et augmente le contenu de la vue déroulante. cela fonctionnera bien. mais en raison de l'application d'avertissement de la mémoire tout à fait.App comme navigateur photo par défaut dans l'iphone?

Les gars, avez-vous une idée d'approcher pour cette fonctionnalité qui fonctionne similaire à l'application photo sans problème?

merci d'avance.

Répondre

0

Vous manquez de mémoire car vous conservez les données de 10 images ou plus en mémoire à la fois. Vous devez avoir plus de logique dans votre code qui non seulement précharge et augmente la taille du contenu de la vue défilante, mais supprime également UIImageViews de la scrollview (et donc de la mémoire) lorsque l'utilisateur fait défiler vers des choses plus récentes. (Vous pouvez également enregistrer des images "expulsées" dans la zone de cache sur le disque, donc si les utilisateurs ne reviennent pas sur le serveur, vous ne devez pas retourner au serveur.)

+0

Merci quixoto pour une bonne idée. N'importe quel code d'échantillon pour cette approche sera beaucoup mieux pour moi PLZZZZZZZZ –

+0

N'avez pas maniable moi-même. C'est le genre de chose qui dépend beaucoup de l'application. Gardez autour d'un tableau des "pages" dans votre vue de défilement, l'utiliser comme une file d'attente, et bosse le moins récent chaque fois que vous avancez. –

+0

J'ai implémenté quelque chose comme ça. Mais ce n'est pas simple de le faire bien. Si vous commencez à charger des éléments alors que l'utilisateur se trouve au milieu d'un mouvement de diapositive, cela semblera mauvais car la diapositive bégaie. Je fais un peu de chargement sur les threads d'arrière-plan, mais il y a encore beaucoup de réglages pour l'améliorer sur tous les anciens et nouveaux périphériques. Pour vous faciliter la tâche, vous pouvez supprimer la prise en charge des anciens périphériques lents et conserver plus de «pages» en mémoire à la fois pour minimiser les occasions de chargement. Là encore, quelqu'un pourrait avoir une meilleure solution ... L'application de l'album d'Apple montre "aperçu" versions basse résolution des images, etc. – Jonny

0

Si vous utilisez un UITableView, il ne demandera que les images si nécessaire, et purgera automatiquement les cellules hors écran pour économiser de la mémoire. Cependant, il se peut que cela ne corresponde pas à l'esthétique de votre application.

Questions connexes