为什么RKNSJSONSerialization在iOS 6上崩溃?

我只在iOS 6上看到了RKNSJSONSerialization的崩溃 – 而不是在iOS 7上。我正在使用RestKit 0.20.3,这种情况对我来说是相当一致的。 即使当我提出相同的请求并获得iOS 6/7的相同响应时,它也可以在iOS 7上正常工作,但在iOS 6上会崩溃。

这是崩溃 – 这是一个EXC_BAD_ACCESS: http ://crashes.to/s/2610b639062

RestKit的RKNSJSONSerialization中的相关(崩溃)行是return:

+ (id)objectFromData:(NSData *)data error:(NSError **)error { return [NSJSONSerialization JSONObjectWithData:data options:0 error:error]; } 

所以也许它根本就不是RestKit – 也许是NSJSONSerialization。

我用僵尸工具描述了应用程序,发现这个:

“一个Objective-C消息被发送到一个解除分配的”CFString(immutable)“对象(僵尸),地址为0x16851250。

难道我做错了什么?

我解决了这个问题。 问题是我的JSON有重复的键,iOS 6无法处理。 解决方法是在iOS 6上使用NSJSONSerializationparsing它之前,从JSON中删除重复键。显然,在iOS 7上,Apple已经解决了这个问题,因为它不会在那里崩溃。

相关: NSJSONSerialization的错误?

这似乎是一个错字。

假设有一个名为NSErrortypes的error的对象,调用JSONObjectWithData:将指针的指针作为最后一个参数,即用&

 return [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];