【问题标题】:NSXMLParser and memory management issuesNSXMLParser 和内存管理问题
【发布时间】:2011-03-22 12:52:43
【问题描述】:

我一直在尝试实现 NSXMLParser,但到目前为止我遇到了内存问题、性能问题或者它不起作用。

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

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

所以我有 3 个问题。属性是处理内存管理问题的最佳方法吗?如果是这样,为什么我不能将 NSDictionary *entry 存储到覆盖中?如果属性不是最好的方法是什么?

干杯

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

【问题讨论】:

  • “不粘”是什么意思?您应该得到调试输出或者它应该可以工作。
  • 它只返回空值。编译并且不会崩溃。就是不行
  • 如果您的日志消息打印出 null 意味着您从未创建过覆盖,所以请这样做

标签: iphone memory-management nsmutablearray nsxmlparser nsmutabledictionary


【解决方案1】:

正如 willcodejavaforfood 指出的那样,这是一个简单的问题。由于它不是一个答案,我所能做的就是投票给它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2012-07-23
    • 2011-01-07
    相关资源
    最近更新 更多