发布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
答案 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