在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),在我看来管理起来更容易(但是......有些人可能不同意!)。
答
尝试使用其他XML解析器,如touchXML或KissXML。 NSXML Parser在框架内部有泄漏。
+1以上没有泄漏,但我也听说NSXMLParser本身泄漏的报告相当糟糕。 – 2011-06-13 03:55:27