在模拟器上运行,[xmlParser parse]会导致iOS 8崩溃,但在iOS7中运行正常。我发现iOS 7和iOS 8之间没有任何关于NSXMLParser的区别。
相关:
NSData *data = [[NSData alloc] initWithContentsOfFile:xmlFilePath];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data];
[xmlParser setDelegate:self];
BOOL success = [xmlParser parse];//crash at this line.
答案 0 :(得分:1)
在IOS 8中,NSXMLParser不支持可重入解析。我非常确定在您指定的行上导致的崩溃是由于可重入解析(即在NSXMLParser的委托方法中设置委托)。吨ake a look at this question
希望它有所帮助。
答案 1 :(得分:0)
检查您的XML是否包含零大小的不可破坏空间UTF-8符号(也称为utf编码签名),代码为xFEFF;属性值中的此符号会导致iOS8解析器字符串释放错误和崩溃。要在PHP后端中删除此字符串,请使用:
$char = mb_convert_encoding('', 'UTF-8', 'HTML-ENTITIES');
$xml = str_replace(array($char, '&#FEFF;'),'',$xml);