NSXMLParser和内存管理问题

时间:2010-07-29 05:05:47

标签: iphone memory-management nsmutablearray nsxmlparser nsmutabledictionary

我一直在尝试实施NSXMLParser,到目前为止,我遇到了内存问题,性能问题或无效。

我最初从网上的一个例子开始工作,它泄漏了一堆内存。我正确地发布了对象,但发现性能受到了影响,因为我会为每个元素分配然后释放每个对象。所以我决定使用效果更好的属性,但是当我尝试将字典添加到数组时它不会坚持:

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

所以我有3个问题。属性是处理内存管理问题的最佳方法吗?如果是这样,为什么我不能将NSDictionary *条目存储到叠加层?如果属性不是最好的方式呢?

干杯

编辑:我正在处理相对较小的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。

1 个答案:

答案 0 :(得分:0)

这是一个简单的问题,因为willcodejavaforfood指出。因为它不能解决所有我能做的就是投票。