2

我有 NSXMLParser 问题,我试过iOS8 NSXMLParser crash this topic,但我真的没有得到解决方案。

我正在创建另一个 NXSMLParser 委托并将其委托设置在另一个类中。

你能告诉我具体做什么,一步一步吗?我感到很困惑。

这是我的代码;

这些代码行在 STXMLParser 内部

   STXMLParser2 *stXMLParser2 = [[STXMLParser2 alloc]init];    

    stXMLParser2.xmlParser = [[NSXMLParser alloc] initWithData:responseLoader.xmlData];
    [stXMLParser2.xmlParser setDelegate:self];
    [stXMLParser2.xmlParser setShouldResolveExternalEntities:YES];
    [stXMLParser2.xmlParser parse];
4

3 回答 3

16

你可以试试这段代码:

dispatch_queue_t reentrantAvoidanceQueue = dispatch_queue_create("reentrantAvoidanceQueue", DISPATCH_QUEUE_SERIAL);
    dispatch_async(reentrantAvoidanceQueue, ^{
        STXMLParser2 *stXMLParser2 = [[STXMLParser2 alloc]init];    
        stXMLParser2.xmlParser = [[NSXMLParser alloc] initWithData:responseLoader.xmlData];
        [stXMLParser2.xmlParser setDelegate:self];
        [stXMLParser2.xmlParser setShouldResolveExternalEntities:YES];
        [stXMLParser2.xmlParser parse];
    });
    dispatch_sync(reentrantAvoidanceQueue, ^{ });
于 2014-09-04T08:16:42.207 回答
2

我遇到了同样的错误,结果发现问题是由于调用了 UI 更新,func parserDidEndDocument(parser: NSXMLParser)它不在主线程上运行。强制该函数中的 UI 更新在主队列上运行后,问题得到解决。

于 2015-06-15T05:45:00.643 回答
0

我最近遇到了同样的问题,但结果是我的一位代表出现了异常(KVO 问题),一旦我修复了可重入错误就消失了。因此,如果您没有明显的多线程或多实例问题,则可能值得寻找其他东西。

于 2015-04-25T12:59:44.780 回答