Обновление. Хотя инструмент Leaks указывает на первый вызов [parser parse];
, я определил, что утечка происходит только тогда, когда я делаю этот вызов во второй раз. Я не вижу в справочнике или документации класса NSXMLParser ничего, что указывает на невозможность повторного синтаксического анализа. Я что-то упускаю? Должен ли я создавать новый NSXMLParser каждый раз, когда я хочу проанализировать документ?
В настоящее время я пытаюсь отследить утечку в моем коде синтаксического анализа xml для приложения для iPhone. Я просмотрел другие сообщения об утечках с помощью NSXMLParser, но не нашел ответов, которые можно было бы использовать, поэтому я был бы очень признателен за помощь.
Инструмент инструментов Leaks обнаруживает утечку в следующем коде:
NSData* data = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"collisionGraph" ofType: @"graphml"]];
NSXMLParser* parser = [[[NSXMLParser alloc] initWithData: data] autorelease];
[parser setDelegate:self];
[parser parse]; <<<<< leak here according to Leaks
self.currentPass++;
...
[parser parse];
self.currentPass++;
Я удалил весь код из моих методов обратного вызова делегата, но это не остановило утечку.
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
}
Вот вид в инструментах http://i22.photobucket.com/albums/b311/Erithil/ParserLeak.png (ссылка, потому что у меня нет представителя для публикации изображений).
Я действительно озадачен этим, поэтому приветствую любые предложения. Заранее спасибо.