答案 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];