当我创建 DDXMLDocument 的自动释放对象时,我的应用程序崩溃了
Posted
技术标签:
【中文标题】当我创建 DDXMLDocument 的自动释放对象时,我的应用程序崩溃了【英文标题】:My app crashed when I created autorelease object of DDXMLDocument 【发布时间】:2012-04-09 20:40:50 【问题描述】:我的应用没有崩溃。
DDXMLDocument *d = [[DDXMLDocument alloc] initWithData:abookConnData options:0 error:nil];
books = [d nodesForXPath:@"abooks/abook" error:nil];
我将 DDXMLDocument 的对象更改为自动释放,我的应用程序开始崩溃。但是为什么呢?
DDXMLDocument *d = [[[DDXMLDocument alloc] initWithData:abookConnData options:0 error:nil] autorelease];
books = [d nodesForXPath:@"abooks/abook" error:nil];
我的应用程序在 DDXMLNode 中崩溃。 [DDXMLNode XMLStringWithOptions:]
【问题讨论】:
【参考方案1】:您没有给出足够的代码来肯定地说,但这几乎可以肯定是您的 DDXMLDOcument* (d) 在您使用它之前就已发布。
尝试打开僵尸检测并在异常上设置断点。通常,这可以引导您找到问题所在的确切代码行。
另一个调试技巧是创建一个 DDXMLDocument 的子类并覆盖 ALLOC 和 RELEASE 以调用 NSLog() 事件(然后是 [super alloc]
或 [super release]
!),这样您就可以看到正在发生的事情。
【讨论】:
以上是关于当我创建 DDXMLDocument 的自动释放对象时,我的应用程序崩溃了的主要内容,如果未能解决你的问题,请参考以下文章
KissXML/DDXMLDocument: Declaration of 'xmlKeepBlanksDefault' must be imported