2010-09-21 8 views
0

J'ai un ivar, keys qui est un NSMutableArray contenant 50 chaînes. Quand mes charges de vue, je reçois une erreur messaged zombie dans Instruments, et il me diriger vers cette ligne de code:Zombie Messaged In For Loop

for (int row = 0; row < r; row++) { 
    for (int column = 0; column < c; column++){ 
     otherArray[column][row] = [[[keys objectAtIndex:0] retain] autorelease]; 
           //^ Instruments brings me here 
     [keys removeObjectAtIndex:0]; 
    } 
} 

J'ai conservé la valeur pour le maintenir en vie afin que la remove ne causera pas de crash, mais ça continue. J'ai essayé de ne pas retenir, et autoreleasing et il se bloque toujours. Cette méthode de retenue et de libération automatique fonctionne quand j'ai une variable locale, mais pas un ivar ...

J'ai besoin d'un ivar parce que j'ai besoin d'accéder aux cordes ailleurs.

Merci

Répondre

0

Résolu - Problème de gestion de la mémoire - les clés n'étaient pas conservées correctement.

0

synthétisent et libèrent et dans votre dealloc.

+0

Il est déjà synthétisé et publié. – joec

+0

alors vous ne devriez pas avoir à l'autoelease ou le conserver, assurez-vous qu'il est initialisé, puisque si Instruments vous amène à cette ligne de code, le problème n'est pas la suppression, c'est la autorelease, conserve, ou objectAtIndex –

+0

J'ai pris la autorelease/retenez et encore il messages un zombie, je ne suis pas sûr de ce que je manque. Il est initialisé comme avant la boucle, je peux imprimer chaque article. Mon flux devrait être ceci: boucle sur les 20 premiers éléments dans le tableau, puis les supprimer. La prochaine fois que la méthode est appelée (nouvelle instance du contrôleur de vue), bouclez sur les 20 prochaines, supprimez-les, etc. – joec