2010-08-07 7 views
1

J'ai trouvé que UIImagePickerController peut décharger votre vue parent, en particulier si vous montez l'appareil photo, ce qui entraîne le rappel de viewDidLoad. Je comprends que cela arrive en raison de la mémoire faible. Mais je stockais le UIImage* de imagePickerController:didFinishPickingMediaWithInfo dans le contrôleur de vue. Ces données sont perdues après un rechargement. (Le pointeur self pour le contrôleur de vue a changé, et le UIImage* est nul.) Donc, est-ce une mauvaise idée de stocker ces variables dans le contrôleur de vue? Où devraient-ils être stockés - dans un objet global (singleton)?UIImagePickerController provoque viewDidLoad - où stocker les données d'image?

Merci

Répondre

0

Ce n'est pas vraiment de bons conseils pour réellement résoudre votre problème, mais en ignorant l'avertissement de mémoire dans ce cas aider beaucoup:

-(void)didReceiveMemoryWarning 
{ 
    // we're too important to get flushed out by our child imagepicker. 
} 

dans votre contrôleur de vue va résoudre ce problème.

Un emplacement pour stocker les objets dont vous avez vraiment besoin, pourrait être le délégué de l'application, car il ne sera pas déchargé sur les avertissements de la mémoire. (n'importe quel endroit ne répondant pas aux avertissements de mémoire fera)

+0

Merci! Je ne savais pas à propos de cette méthode. –

Questions connexes