UPDATE2我想我找到了泄漏的真正来源。我有一些业务对象具有我忘记发布的字符串属性。这些字符串属性是从我在此处创建的自定义xlm节点对象(KGYXMLNode)复制的。我不明白为什么会在此处报告泄漏,而不是我的自定义类。我的NSString属性是copy
而不是retain
。为什么我的代码泄漏?
更新:我认为这是一个仪器或其他东西的bug,或者它不会再奇迹般地泄漏,但是因为xcode 4没有显示这个泄漏。
你好,根据仪器我有一个在下面的代码泄漏。我已经构建了一个围绕某些libxml函数的objective-c包装器,以便能够使用xpath解析xml文档,并且在此方法中,我为自定义节点对象设置了innerText。
-(void) SetInnerTextForNode: (xmlNodePtr) node : (KGYXMLNode *) obcNode
{
if ((node) && (node->children))
{
for (xmlNodePtr pnode = node->children; pnode != NULL; pnode = pnode->next)
{
if (pnode->type == XML_TEXT_NODE)
{
xmlChar *content = pnode->content;
NSString *innerText = [[NSString alloc] initWithUTF8String: (char *)content];
NSString *trimmedText = [innerText stringByTrimmingCharactersInSet: trimCharSet];
if (trimmedText.length > 0)
obcNode.innerText = trimmedText;
[innerText release];
break;
}
}
}
}
泄漏是NSString *innerText = [[NSString alloc] initWithUTF8String: (char *)content];
。我不知道什么是错的。
是什么让你这么说?你怎么知道'innerText'属性是'assign','copy'还是'retain'? – 2010-11-08 14:21:41
obcNode.innerText是一个复制属性。应该没问题。 – 2010-11-08 14:28:40