Обновление : я редактировал код, но проблема сохраняется ...
Привет всем,
это мой первый пост здесь - я нашел это место отличным ресурсом для решения многих моих вопросов. Обычно я изо всех сил стараюсь что-то исправить самостоятельно, но на этот раз я действительно не знаю, что происходит не так, поэтому я надеюсь, что кто-то может мне помочь.
Я создаю приложение для iPhone, которое анализирует пару XML-файлов с помощью TouchXML. У меня есть класс XMLParser, который заботится о загрузке и разборе результатов. Я получаю утечки памяти, когда я анализирую XML-файл более одного раза с одним и тем же экземпляром XMLParser.
Вот один из фрагментов анализа (только соответствующая часть):
for(int counter = 0; counter < [item childCount]; counter++) {
CXMLNode *child = [item childAtIndex:counter];
if([[child name] isEqualToString:@"PRODUCT"])
{
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
for(int j = 0; j < [child childCount]; j++) {
CXMLNode *grandchild = [child childAtIndex:j];
if([[grandchild stringValue] length] > 1) {
NSString *trimmedString = [[grandchild stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[product setObject:trimmedString forKey:[grandchild name]];
}
}
// Add product to current category array
switch (categoryId) {
case 0:
[self.mobil addObject: product];
break;
case 1:
[self.allgemein addObject: product];
break;
case 2:
[self.besitzeIch addObject: product];
break;
case 3:
[self.willIch addObject: product];
break;
default:
break;
}
[product release];
}
}
В первый раз, когда я анализирую xml, в инструментах нет утечек, в следующий раз я получаю много утечек (NSCFString / NSCFDictionary).
Инструменты указывают мне на эту часть внутри CXMLNode.m , когда я копаюсь в протекшем объекте:
theStringValue = [NSString stringWithUTF8String:(const char *)theXMLString];
if ( _node->type != CXMLTextKind )
xmlFree(theXMLString);
}
return(theStringValue);
Я действительно потратил много времени и попробовал несколько подходов, чтобы исправить это, но пока безрезультатно, может быть, я упускаю что-то важное?
Любая помощь высоко ценится, спасибо!