0

Я пытался реализовать NSXMLParser, и до сих пор у меня были проблемы с памятью, проблемы с производительностью или это не сработало.Проблемы с управлением NSXMLParser и памятью

Я работал первоначально из примера с сети, и он просочился в кучу памяти. Я правильно выпустил объекты, но обнаружил, что был удар по производительности, потому что я бы выделил и затем выпустил каждый объект для каждого элемента. И тогда я решил использовать свойство, которые работали лучше, но когда я пытаюсь добавить словарь в массив не прилипает:

[overlay insertObject:entry atIndex:[overlay count]]; 

Так у меня есть 3 вопроса. Является ли свойство наилучшим способом справиться с проблемой управления памятью? Если да, почему я не могу хранить запись NSDictionary * в оверлей? Если свойства не являются наилучшим способом, что такое?

Приветствия

Edit: я имею дело с относительно небольших XML-файлов, но у них есть много элементов. Я загрузил их из URL-адреса и поместил данные в базу данных SQLite.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
if ([attributeDict objectForKey:@"title"]) { 
    self.title = [attributeDict objectForKey:@"title"]; 
} else if ([attributeDict objectForKey:@"lng"]) { 
    self.latitude = [attributeDict objectForKey:@"lng"]; 
    self.longitude = [attributeDict objectForKey:@"lat"]; 
} 
if (title && latitude) { 
    NSMutableDictionary *entry = [[NSMutableDictionary alloc] init]; 
    [entry setObject:title forKey:@"title"]; 
    [entry setObject:latitude forKey:@"latitude"]; 
    [entry setObject:longitude forKey:@"longitude"]; 
    [overlay insertObject:entry atIndex:[overlay count]]; 
    [entry release]; 
    NSLog(@"%@", overlay); 
} 
} 

Другие вызовы делегатов не используются, поскольку в атрибутах используются только данные. NSLog в конце просто возвращает null.

+0

Я предпочитаю использовать libxml2 – Akusete

+0

Что это значит, что «это не прилипает»? Вы должны либо получать отладочную информацию, либо работать. – jtbandes

+0

напишите свой код парсера – slf

ответ

0

Это была простая проблема, так как willcodejavaforfood указал. Поскольку это не ответ, я мог только проголосовать.