开发者

NSXMLParser and memory management issues

开发者 https://www.devze.com 2023-01-09 02:59 出处:网络
I\'ve been trying to implement NSXMLParser and so far I\'ve had memory issues, performance issues or it doesn\'t work.

I've been trying to implement NSXMLParser and so far I've had memory issues, performance issues or it doesn't work.

I worked originally from a example off the net and it leaked a heap of memory. I released the objects properly but found that there was a performance hit because I would alloc and开发者_StackOverflow then release each object for each element. So then I decided to use properties which have worked better, but when I try and add the dictionary to array it doesn't stick:

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

So I have 3 questions. Is properties the best way to handle the the memory management issue? If so why can't I store the NSDictionary *entry into overlay? If properties isn't the best way what is?

Cheers

Edit: I'm dealing with relatively small xml files but they have a lot of elements. I've downloaded them from a URL and placing the data into an SQLite database.

- (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);
}
}

The other delegate calls aren't being used because the only data is in the attributes. NSLog at the end just returns null.


It was a simple problem as willcodejavaforfood pointed out. As its not an answer all I could do was vote it up.

0

精彩评论

暂无评论...
验证码 换一张
取 消