使用NSXMLParser进行EXC_BAD_ACCESS

时间:2011-08-23 12:08:06

标签: iphone objective-c nsxmlparser exc-bad-access

2 个答案:

答案 0 :(得分:1)

该消息表示代码正在尝试调用字符串对象上的方法(意味着它不是nil),但该对象已被解除分配(已释放)。

didEndElement中,您正在发布completeString,但未将其设置为nil。这使得您可以获得错误。

可能发生的事情发生在didEndElement之后,foundCharacters在 a didStartElement之前被称为(可能有一些空格,如标签之间的新行)所以completeString仍然被解除分配,导致崩溃。

执行[completeString release];后也将其设置为nil,因此在重新分配之前可能对其执行的任何方法调用都不会崩溃。

如果completeString不是addObject(根据xml标签的嵌套方式可能会发生这种情况),那么只做nil也是个好主意。

因此,请尝试将didEndElement更改为:

if (completeString != nil) {
    [offersData addObject:completeString];
}
[completeString release];
completeString = nil;

答案 1 :(得分:0)

如果你合成了completeString那么你必须用self来调用以保留

更改此

  completeString = [[NSMutableString alloc] init];

 self.completeString = [[NSMutableString alloc] init];