2010-10-08 4 views
0

J'ai une application simple (ce qui est mon premier) qui charge une image de mon dossier de ressources, je change mon image comme celui-ci (avec le nom de changement d'image):IPhone App Crashes sur le périphérique

myUIImageView.image = [UIImage imageNamed:@"nextImage.jpg"]; 

Il fonctionne très bien sur l'application, je peux changer l'image un nombre infini de fois. Mais quand je le lance sur mon Ipod Touch, il se bloque après que l'image change environ 4 fois. Ai-je besoin de libérer l'image lorsque je la change? Il semble certainement être un problème de mémoire,

Je devrais mentionner chaque image est comme 200kb.

La console lit quand il se bloque:

Program received signal: “0”. 
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib") 

Tout conseil serait utile, Merci!

+1

Cette ligne ne devrait pas tomber en panne, et vous ne devez pas la libérer, car imageNamed: donne un objet autoreleased. S'il vous plaît fournir plus de code, ou le message d'erreur de l'accident et stacktrace. – Altealice

+0

Cette ligne pourrait ne pas être le coupable parce que c'est parfaitement bien. [UIImage imageNamed] est autorelease et myUIImageView.image est conservé. Le problème pourrait être ailleurs, libérez-vous myUIImageView? – Manny

+0

Je ne le libère pas, désolé je suis un peu un débutant dans ce domaine, je l'ai couru sur mon appareil avec le moniteur d'activité et la taille de la VM semble être très élevée, comment puis-je libérer myUIIMageView? –

Répondre

1

Quand vous dites que ça fonctionne très bien, voulez-vous dire qu'il fonctionne très bien sur le simulateur?

J'ai trouvé qu'il n'est pas bon de vérifier les problèmes de mémoire sur le simulateur: il a tendance à être beaucoup trop puissant par rapport à un périphérique réel. Le plantage peut ne pas être sur votre code de permutation d'image du tout.

Je vous recommande de passer en revue votre code et vérifier les fuites. Surveillez-le également en utilisant Instruments-> Fuites en cours d'exécution sur l'appareil, pas sur simulateur.

1

Vérifiez si vous libérez un objet quelque part. Cela ressemble vraiment à une mauvaise utilisation de la méthode de publication.

Questions connexes