TouchXML过度发布问题

时间:2011-07-29 21:40:41

标签: iphone objective-c touchxml

发布CXMLDocument时出现EXEC_BAD_ACCESS错误。

这是我非常简单的代码,它没有依赖关系:

@implementation TestViewController

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSError *xmlError = nil;    
    CXMLDocument *xmlDoc = [[CXMLDocument alloc] initWithXMLString:@"<test></test>" options:0 error:&xmlError];
    CXMLElement *rootElement = [xmlDoc rootElement]; // Unused local variable   
    [xmlDoc release];
}

如果我评论CXMLElement *rootElement = [xmlDoc rootElement];或我保留它,则没有错误。

如何调用[xmlDoc rootElement]导致xmlDoc被释放?这是一个TouchXML错误还是我错过了一些非常基本的东西?

此处有类似的问题,但无效答案:Weird crash if I try to release CXMLDocument

3 个答案:

答案 0 :(得分:0)

这是获取rootElement的正确方法吗?我从未使用过TouchXML,但从我能找到的内容来看,似乎相应地完成了rootElement的使用

NSArray *foundRoots = [theXMLDocument nodesForXPath:@"//Root"  error:&xmlError]; 
CXMLElement Root = [foundRoots objectAtIndex:0];

答案 1 :(得分:0)

当我关闭Guard Malloc时,崩溃消失了。假设Guard Malloc是可靠的,这看起来像是一个Touch XML错误。

答案 2 :(得分:0)

我经常使用TouchXML,并且(幸运的是?)到目前为止我没有遇到这个问题,但它刚刚发生......

我在这里发布了一个解决方案: Memory crash using [CXMLNode nodesForXPath] with namespace mappings