0

J'ai essayé d'implémenter NSXMLParser et jusqu'à présent, j'ai eu des problèmes de mémoire, des problèmes de performances ou cela ne fonctionne pas.NSXMLParser et les problèmes de gestion de la mémoire

J'ai travaillé à l'origine à partir d'un exemple sur le net et il a coulé un tas de mémoire. J'ai libéré les objets correctement, mais j'ai constaté qu'il y avait un coup de performance parce que j'allouerais puis relâcherais chaque objet pour chaque élément. Alors j'ai décidé d'utiliser les propriétés qui ont le mieux fonctionné, mais quand je tente d'ajouter le dictionnaire à un tableau, il ne colle pas:

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

J'ai donc 3 questions. Est-ce que les propriétés sont le meilleur moyen de gérer le problème de gestion de la mémoire? Si oui, pourquoi ne puis-je pas stocker l'entrée NSDictionary * dans la superposition? Si les propriétés ne sont pas la meilleure façon de savoir ce que c'est?

Vive

Edit: je traite avec des fichiers XML relativement petits mais ils ont beaucoup d'éléments. Je les ai téléchargés depuis une URL et j'ai placé les données dans une base de données 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); 
} 
} 

Les autres appels délégués ne sont pas utilisés car les seules données sont dans les attributs. NSLog à la fin retourne juste null.

+0

Je préfère utiliser libxml2 – Akusete

+0

Qu'est-ce que ça veut dire "ça ne colle pas"? Vous devriez soit obtenir la sortie de débogage ou cela devrait fonctionner. – jtbandes

+0

postez votre code analyseur – slf

Répondre

0

C'était un problème simple comme willcodejavaforfood a fait remarquer. Comme ce n'est pas une réponse, tout ce que je pouvais faire, c'était voter.