UPDATE2 Я думаю, что нашел истинный источник утечек. У меня были некоторые бизнес-объекты, у которых есть свойства строки, которые я забыл выпустить. Эти свойства строки были скопированы из моего настраиваемого объекта узла xlm, созданного здесь (KGYXMLNode). Я не понимаю, почему здесь сообщается об утечке вместо моего пользовательского класса. Мои свойства NSString были copy
, а не retain
.Почему мой код протекает?
ОБНОВЛЕНИЕ: Я думаю, что это была ошибка в Инструментах или что-то в этом роде, или она не магически течет больше, но поскольку xcode 4 не показывает эту утечку.
Здравствуйте, согласно приборам у меня есть утечка в следующем коде. Я построил обертку object-c вокруг определенных функций libxml, чтобы иметь возможность анализировать XML-документы с помощью xpath, и в этом методе я устанавливаю 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' или' keep'? – 2010-11-08 14:21:41
obcNode.innerText - свойство копирования. Это должно быть хорошо. –