2010-12-14 25 views
0

J'utilise deux objets, à savoir pagesUrl et pagesXmlParser dans le code et après leur utilisation, je libère ces deux objets. Son fonctionnement est bon mais c'est en les montrant en fuite de mémoire. quand j'ai essayé de le vérifier, j'ai vérifié le nombre de références de ces objets et son '1' même après la libération des objets. quelqu'un peut-il m'aider à supprimer cette fuite et comment libérer ces objets particuliers dans le code suivant.iPhone: fuite de mémoire dans ce code?

-(void)loadPagesForChapter:(NSString *)path{ 
// have to parse the pages xml for this chapter 

    NSURL *pagesUrl = [[NSURL alloc] initFileURLWithPath:[self pagesXmlPath:path]]; 

    NSXMLParser *pagesXmlParser = [[NSXMLParser alloc] initWithContentsOfURL:pagesUrl]; 

    PagesAccumulator *pageLoader = [[PagesAccumulator alloc] init]; 
    pagesXmlParser.delegate = pageLoader; 

    [pagesXmlParser parse]; 

// parsing pages done 
// get the pages array 
self.arrayOfPages = pageLoader.arrayOfPages; 

    [pageLoader release]; 
[pagesXmlParser release]; 
[pagesUrl release]; 
NSLog(@"pagesurl retain count is:%d",[pagesUrl retainCount]); 
    NSLog(@"pagesxmlparser retain count is:%d",[pagesXmlParser retainCount]); 
} 

Merci d'avance pour toute assistance.

+1

Des fuites dans l'appareil ou dans le simulateur - si des fuites dans le simulateur le testent sur l'appareil - le simulateur vous donnera parfois des résultats incorrects! – deanWombourne

Répondre

3

Ignore Retain compte

Juste parce qu'un objet a un retain nombre> 0 ne veut pas dire que ce n'est pas aussi autoreleased :)

Votre code semble bien pour moi.

Si c'est vraiment une fuite, je regarderais votre implémentation de PageLoader pour voir s'il existe une méthode retenue dans l'une des méthodes NSXMLParserDelegate qui empêche la libération de l'analyseur (ce qui provoquerait également la fuite de l'URL).

+0

Merci pour votre réponse. ça marchait bien ... merci beaucoup ... – raj