2010-06-07 6 views
0

J'ai une animation qui fonctionne bien dans le simulateur mais se bloque sur l'appareil. Je reçois l'erreur suivante ...Fuite de mémoire de l'application iPhone avec animation UIImage? Problème de test sur le périphérique

Le programme a reçu le signal: "0". Le débogueur s'est terminé en raison du signal 10 (SIGBUS)

Un peu d'enquête suggère que les UIImages ne sont pas libérés et j'ai une fuite de mémoire. Je suis nouveau à ceci donc quelqu'un peut-il me dire si c'est la cause probable? Si vous pouviez aussi me dire comment le résoudre, ce serait génial.

Les images sont de 480 x 480 pixels et d'environ 25 kb chacune. Mon code est ci-dessous ...

NSArray *rainImages = [NSArray arrayWithObjects: 
          [UIImage imageNamed:@"rain-loop0001.png"], 
          [UIImage imageNamed:@"rain-loop0002.png"], 
          [UIImage imageNamed:@"rain-loop0003.png"], 
          [UIImage imageNamed:@"rain-loop0004.png"], 
          [UIImage imageNamed:@"rain-loop0005.png"], 
          [UIImage imageNamed:@"rain-loop0006.png"], 
          //more looping images 
          [UIImage imageNamed:@"rain-loop0045.png"], 
          [UIImage imageNamed:@"rain-loop0046.png"], 
          [UIImage imageNamed:@"rain-loop0047.png"], 
          [UIImage imageNamed:@"rain-loop0048.png"], 
          [UIImage imageNamed:@"rain-loop0049.png"], 
          [UIImage imageNamed:@"rain-loop0050.png"], 
          nil]; 


    rainImage.animationImages = rainImages; 
    rainImage.animationDuration = 4.15/2; 
    rainImage.animationRepeatCount = 0; 
    [rainImage startAnimating]; 
    [rainImage release]; 

Merci

Répondre

0

Je suis sûr que vous écraser parce que [NSArray arrayWithObjects:] retourne un objet libéré automatique qui vous stockez à rainImage. Ensuite, en bas, vous relâchez de nouveau la pluie, donc vous relâchez.

+0

J'ai essayé de supprimer l'instruction release, mais cela ne fait pas de différence. Le lien ci-dessus suggère qu'il utilise imageNamed qui cause mes problèmes. Merci pour la tête à ce sujet :-) – user157733

0

Cela m'a aidé un certain temps il y a

http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/

+0

Merci qui ressemble à c'est le problème. Je suis nouveau à cela et j'ai de la difficulté à le mettre en œuvre. Aurais-je juste remplacer chaque [UIImage imageNamed: @ "rain-loop0001.png"] avec [self thumbnailImage: @ "rain-loop0001.png"] (après avoir bien sûr ajouté la fonction et le dictionnaire)? Je n'ai pas d'erreurs mais mon animation ne fonctionne pas ... – user157733

0

La racine du problème est que vous êtes à court de mémoire principale parce que vous avez trop d'images décompressés en mémoire, voir ma réponse à uiimage-animation-causing-app-to-crash-memory-leaks pour la raison pour laquelle vous ne devriez pas utiliser UIImageView.animationImages.

Questions connexes