2010-03-23 5 views
3

Selon le UIImage documentation:Comment fonctionne UIImage dans des situations à faible mémoire?

Dans les situations à faible mémoire, des données d'image peuvent être purgés d'un objet UIImage pour libérer de la mémoire sur le système.

Est-ce que quelqu'un sait comment cela fonctionne? Il semble que ce processus est complètement transparent et se produira en arrière-plan sans entrée de moi, mais je ne peux pas trouver toute la documentation définitive d'une façon ou l'autre.

En second lieu, ces données ne purge se produire lorsque l'image est pas chargé par moi? (Je reçois l'image de UIImagePicker).

Voici la situation: Je prends une photo avec le UIImagePickerController et immédiatement prendre cette image et l'envoyer à un nouveau UIViewController pour l'affichage. Envoyer l'image brute au nouveau contrôleur bloque mon application avec des avertissements de mémoire environ 30% du temps. Redimensionner l'image prend quelques instants, temps que je préfère ne pas dépenser s'il y a une 3ème option à ma disposition.

Répondre

3

Je pense que ceci est la réponse. Dans la documentation initWithContentsOfFile: il est dit:

Cette méthode charge les données d'image en mémoire et il marque comme purgeables. Si les données sont purgés et doit être rechargé, les charges d'objets d'image que les données à nouveau à partir du chemin d'accès spécifié.

Aucune des autres méthodes UIImage purge de mention, il semble donc que l'initialisation d'une nouvelle image à partir d'un fichier est la seule façon d'obtenir ce faible comportement de mémoire.

0

En réponse à votre deuxième question: Enregistrer dans un fichier, puis utilisez:

[NSData dataWithContentsOfMappedFile:] 

pour faire le redimensionnement. Utiliser un fichier comme intermédiaire est plutôt lent.

Questions connexes