今日遇到此問(wèn)題的前提:
使用iOS系統(tǒng)自帶的Xml解析類(lèi) NSXMLParser類(lèi)來(lái)進(jìn)行解析兩個(gè)xml文件淘邻,一個(gè)在服務(wù)器上一個(gè)在本地旺罢,我只想在一個(gè)類(lèi)里面做這兩個(gè)文件的解析,等到線(xiàn)上的xml文件解析完成之后在NSXMLParserDelegate中的
-(void)parserDidEndDocument:(NSXMLParser *)parser
方法來(lái)進(jìn)行本地xml文件的解析 結(jié)果出現(xiàn)了如題的問(wèn)題许蓖。
問(wèn)題核心:
通過(guò)上述遇見(jiàn)的問(wèn)題以及我網(wǎng)上搜集的資料發(fā)現(xiàn)當(dāng)你在NSXMLParserDelegate回調(diào)方法中再進(jìn)行解析的話(huà)就會(huì)出現(xiàn)這個(gè)問(wèn)題罪塔,問(wèn)題直譯過(guò)來(lái):NSXMLParser類(lèi)不支持折返解析。
當(dāng)你用這個(gè)類(lèi)解析完上個(gè)xml文件的時(shí)候隅忿,此時(shí)NSXMLParser現(xiàn)在是線(xiàn)程安全的心剥,然而,它是不可重入的給定線(xiàn)程。
解決方法:
重新開(kāi)啟一個(gè)線(xiàn)程來(lái)解析另一個(gè)xml背桐,code如下:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
if ([_localResParser parse]) {
NSLog(@"OK!");
}
else
{
NSLog(@"%@",_localResParser.parserError);
}
});