0

我是 iphone 开发新手,我在以下代码中面临内存泄漏

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentNodeContent)
    currentNodeContent = [[[NSMutableString alloc] initWithString:string] autorelease];
else
    [currentNodeContent appendString:string];
}

使用仪器工具分析时,我在此代码中收到 100% 的内存泄漏

currentNodeContent = [[[NSMutableString alloc] initWithString:string] autorelease];

任何人都可以建议我解决此泄漏的方法吗

4

2 回答 2

0

Instruments 擅长查找泄漏的对象。它不太擅长告诉你泄漏的来源。如果这是对象泄漏,那不是因为这段代码,而是因为代码中的其他地方,你已经保留了它currentNodeContent(可能将它添加到其他从未释放它的数据结构中)。

静态分析器(shift++或在 Xcode“产品”菜单上选择“分析” B有时可以识别泄漏源。在使用 Instruments 之前,我会确保你在那里得到一份干净的健康证明。

如果您仍然在泄漏,我会查看您在 in 中所做的事情currentNodeContentdidEndElement并从那时起查看您的内存管理。

您还可以查看Instruments User Guide的Finding Leaks部分并查看其他建议(例如,在那里讨论的“Cycles and Roots”可能会帮助您遵循此泄漏对象的对象图)。

于 2013-07-25T13:07:28.377 回答
0

替换这一行currentNodeContent = [string mutablecopy];,看看这是否可行。

于 2013-07-25T13:43:35.683 回答