2010-11-08 22 views
0

ci-dessous est mon code, Leaks dit que je reçois une fuite de mémoire autour de la méthode alloc NSMutableString. Je suis sûr que c'est quelque chose que j'ai simplement oublié, laissez-moi savoir si quelqu'un a des idées. Merci!Fuite de mémoire avec NSXMLParser sur IPhone


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

    if (!currentValue) { 
     currentValue = [[NSMutableString alloc] initWithCapacity:[string length]]; 
    } 

    [currentValue setString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; 

} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

    if([elementName isEqualToString:@"phone"]){ 

     currentAgent.phone = currentValue; 
    } 

    [currentValue release]; 

    currentValue = nil; 

} 

-Agent est un objet personnalisé qui a été créé lorsque la classe a été initialisé. Le XML est valide et possède toutes les balises begin/end appropriées.

Répondre

1

En regardant par-dessus ce code, je pense qu'il est plus probable que votre classe d'agent fuit le téléphone. En supposant que l'agent utilise retain pour la propriété du téléphone, le téléphone persistera plus longtemps qu'il ne le devrait.

Le créateur de l'objet est «crédité» de la fuite, même si la retenue supplémentaire est ailleurs.

En d'autres termes, Agent:

- (void)dealloc { 
    self.phone = nil; 
    // anything else you need to do 
    [super dealloc]; 
} 
+0

Merci beaucoup Steven, je savais qu'il était quelque chose que je tout simplement oublié. Il semble que mon dealloc pour la classe Agent avait des versions pour toutes les propriétés acceptent le téléphone. J'ai modifié et la fuite semble être résolue. Merci! – DerekH

+0

De rien. J'ai atteint le point où j'apprécie vraiment les problèmes de mémoire. :) –