【发布时间】:2016-03-29 01:46:51
【问题描述】:
当我在 iOS 8.4 和 9.2 上运行以下代码时,我得到一个 808 字节的 NSData 对象 jsonData:
NSData *jsonData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]];
但是,如果我随后将此 NSData 对象输入 CJSONDeserializer,我会在 iOS 9.2 中崩溃,但在 iOS 8.4 中会出现 NSDictionary。例如
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:nil];
注意:在崩溃的那一行,NSData 对象似乎发生了变化——例如这里:
- (id)deserializeAsDictionary:(NSData *)inData error:(NSError **)outError
{
if ([self _setData:inData error:outError] == NO)
inData 在 iOS 8.4 中为 808 字节,但在 iOS 9.2 中如下所示:
由于地址奇数,我认为这意味着对象不正确(可能被覆盖?)。
我试图在没有应用程序传输安全开销的情况下找出问题,因此我将 NSAppTransportSecurity 设置如下:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我还更新了 CJSONDeserializer 到最新版本。
任何其他建议可能是什么问题。
【问题讨论】:
-
崩溃日志显示的原因是什么?我相信结果不是有效的 json 格式。
标签: ios objective-c json app-transport-security ios9.2