2011-01-05 3 views
1

À un certain moment, j'allouent un élément NSMutableData comme ceci:problème de mémoire étrange

NSMutableData* data=[[NSMutableData alloc] initWithLength:0]; 

Plus tard, je fais:

NSString *dataAsStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ; 
completeCommand = [NSString stringWithFormat:@"%@%@", 
    incompleteMessage, 
    [dataAsStr substringWithRange:NSMakeRange(startIndex, i-startIndex)]];   
[incompleteMessage release]; 
incompleteMessage = nil; 
[dataAsStr release]; 

Et enfin j'appelle:

[data release]; //Here I get a BAD_ACCESS error since data gets a release count of -1 

maintenant selon aux instruments (Allocations avec support zombie), la première ligne du second bloc NSString * dataAsString = ... appelle [data release]

Où cela se produit-il?

+2

pouvez-vous poster la méthode complète, semble que ce problème n'est pas dans le champ d'application du code affiché. – Manny

+0

Essayez simplement [[NSMutableData alloc] init]. Peut-être que ça aide. – burki

+1

Que faites-vous avec les données avant de jouer avec dataAsStr? –

Répondre

0

Le mystère est résolu .. C'est une méthode plutôt grande, donc je ne m'en suis pas rendu compte [data release]; était dans une boucle et son alloc était pas. Cela causait le zombie.