在NSXML解析器中泄漏

在NSXML解析器中泄漏

问题描述:

看起来这段代码中存在内存泄漏。我正在使用它来解析XML数据。在NSXML解析器中泄漏

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
attributes:(NSDictionary *)attributeDict 
{ 
currentElement = [[elementName copy]autorelease]; 
if ([elementName isEqualToString:@"value1"]) { 
    self.currentString =[NSMutableString string]; 
} 


else if ([elementName isEqualToString:@"value2"]) { 
    self.currentStringName =[NSMutableString string]; 
} 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
if ([currentElement isEqualToString:@"value1"]) { 
    [currentString appendString:string]; 
} 

else if ([currentElement isEqualToString:@"value2"]) { 
    [currentStringName appendString:string]; 
} 

} 

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

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

    } 
    else if ([elementName isEqualToString:@"value2"]) 
    { 
    } 

您可能想对“NSXMLParser leak”风格进行一点研究。像SDK的其他部分一样,NSXMLParser是一个破碎的大坝。我没有看到你的代码(之后,我必须说,非常快速地看一眼)任何泄漏...我的意思是比较你会发现在NSXMLParser。不幸的是,你无法对他们做任何事情。

所以,基本上,如果仪器,例如,报告与您的代码泄漏,不要羞愧:NSXMLParser is responsible

如果有机会,不要犹豫,以保持对你创建的对象(并避免autorelease),在我看来管理起来更容易(但是......有些人可能不同意!)。

+1

+1以上没有泄漏,但我也听说NSXMLParser本身泄漏的报告相当糟糕。 – 2011-06-13 03:55:27

尝试使用其他XML解析器,如touchXML或KissXML。 NSXML Parser在框架内部有泄漏。