为什么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的错误?
这似乎是一个错字。
假设有一个名为NSError
types的error
的对象,调用JSONObjectWithData:
将指针的指针作为最后一个参数,即用&
。
return [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];