Утечка памяти в iOS XML-парсере с помощью KissXML

Я был смущен этой проблемой памяти в течение нескольких дней. В моем проекте iOS я использую KissXML в качестве анализатора XML. Мои XML-файлы огромны (15M). Теперь возникает проблема с памятью:

Вот мой код

http соединение завершено:

NSData *copyData = [NSData dataWithData:self.httpData];  //self.httpData-recieved from http connection.
dispatch_async(globalQueue,^{  //globalQueue-GCD global queue.
    [AIDXMLParser universalParser:copyData];  //Class method for XML Parser.
});

В API: универсальныйПарсер AIDXMLParser.m

DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:xmlData options:0 error:nil];
[doc release];

Когда я запускаю свое приложение. Я использую [Activity Monitor], чтобы отследить использование моей памяти.

До: [Реальный объем памяти] 40,7M

После: [Реальный объем памяти составляет 63.1M

Увеличенная память (63.1M-40.7M) остается там навсегда.

Все работает хорошо Я пытался использовать TBXML вместо KissXML. Используйте Instruments-Profile/Analyze для тестирования, но пока нет ошибок или предупреждений. Я не знаю, где я не прав.

Кто-нибудь еще сталкивается с той же проблемой?

1 ответ

Решение

Это может быть из-за размера ваших NSData, попробуйте разделить ваш XML и выполнить анализ несколько раз.

У меня такая же проблема с JSON 10MB+.

Другие вопросы по тегам