Утечка памяти в 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+.