为什么RKNSJSONSerialization在iOS 6上崩溃?
我在iOS 6上看到了RKNSJSONSerialization中的崩溃 - 而不是iOS 7中。我使用RestKit 0.20.3,它对我来说发生得相当一致。甚至当我提出同样的要求,并得到iOS的6/7相同的响应,它适用于iOS 7罚款,但崩溃在iOS 6为什么RKNSJSONSerialization在iOS 6上崩溃?
这里的崩溃 - 这是一个EXC_BAD_ACCESS:http://crashes.to/s/2610b639062
相关(在RestKit的RKNSJSONSerialization崩溃)线返回:
+ (id)objectFromData:(NSData *)data error:(NSError **)error
{
return [NSJSONSerialization JSONObjectWithData:data options:0 error:error];
}
因此,也许它不是RestKit在所有 - 也许这是NSJSONSerialization。
我异型与僵尸工具应用程序,并发现这一点:
“一个Objective-C消息被发送到的地址a解除分配的‘CFString字符串(不可变)’对象(僵尸):0x16851250”
我做错了什么?
我解决了这个问题。问题是我的JSON中有重复的键,而iOS 6无法处理它。解决方法是在尝试使用iOS 6上的NSJSONSerialization解析它之前,从JSON中删除重复的键。显然,Apple已经在iOS 7上解决了这个问题,因为它不会在那里崩溃。
这似乎是一个错字。
假设NSError
类型的对象叫做error
,调用JSONObjectWithData:
需要一个指针指针作为最后一个参数,即&
。
return [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
谢谢 - 我用更多的代码更新了问题,以显示RestKit的确在传递指针指针。 –
当然,如果在处理“错误”的地方出现错误,那么可以这样做。 –
也许你有某种僵尸问题。 –
不知道这会有所帮助,因为它是RestKit的一部分,但不是它应该是:'return [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];'? – btomw
@btomw感谢您的建议,但我不认为这是问题(请参阅更新的代码)。 –