我看到 [解析器版本] 出现间歇性崩溃。我会说我大约有 5% 的时间会看到它,而且我正在解析的数据在每次崩溃之间都会有所不同。我无法为我的生活找出原因。
在我向 Apple 提交错误报告(幸运的是,在示例代码中无法重现)之前,有没有人遇到过这个问题并知道可能发生了什么?
NSData *d = [data copy]; // data is typically 2K-13K bytes
@synchronized (xmlParserLock) {
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:d];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
[parser release];
[pool release];
}
[d release];
这是 gdb 'where' 输出,它指向 [parser release]:
#0 0x93d08d12 in xmlCharEncCloseFunc ()
#1 0x93cfc0e3 in xmlFreeParserInputBuffer ()
#2 0x93cfc08f in xmlFreeInputStream ()
#3 0x93cfbdac in xmlFreeParserCtxt ()
#4 0x961384d6 in -[NSXMLParser dealloc] ()
#5 0x00149de7 in -[MyParserClass parseResponse] (self=0x104e9f0, _cmd=0x1766dc) at /Users/mike/Documents/MyApp/Classes/MyParserClass.m:60
提前感谢您的帮助!