JSONKit崩溃:iPad ratina 64位设备模拟器中的iOS7 Xcode 5.1

甘榜

我已经使用JSONKit库来解析字典并获取JSON字符串。普通设备(iOS7)一切都很好。但是,当我在iOS 7-64位模拟器中运行应用程序时,它在以下方法下崩溃了:

- (NSString *)JSONString;

崩溃消息显示在这行JSONKit.m课上

在此处输入图片说明

试图找出它,但无法整理。

最后,我完成了本机的NSJSONSerialization类。

有没有人解决这个问题?

Qiulang

据我所知,有多个补丁版本试图解决您在此处提到的64位崩溃问题,例如heroims的JSONKit 64位崩溃修复

他们都试图修复麻烦的行以获取标记的指针,“ Objective-C对象的指针“指向”的第一件事就是该对象类的指针”:

*((void **)objectPtr) 

我写了一个简单的代码来模拟崩溃,

NSDictionary *dic = @{@"hi":@(4)};
void *keys[2], *objects[2];
CFDictionaryGetKeysAndValues((CFDictionaryRef)dic, (const void **)keys, (const void **)objects);
void *objectPtr = objects[0];
void *another = *((void **)objectPtr);//Only works for 32 bit machine
NSLog(@"%@",[another description]);

我的猜测是,对于64位编译器,Apple更改了NSNumber的标记指针实现,这导致崩溃。在此处检查有关标记指针的讨论stackoverflow.com/questions/5819387/why-is-nsnumber-immutable

如果我更改NSDictionary *dic = @{@"hi":@(4)};NSDictionary *dic = @{@"hi":@"hello"};它,则不会崩溃。

我在这里提到的补丁仅使用了object_getClass,这似乎违背了最初的目的:“为什么不仅仅使用object_getClass()?...”(上面的注释)

因此,就像您现在所说的,我最终也使用了NSJSONSerialization类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Xcode 7 Beta 5中安装iOS 7及更高版本的模拟器?

在Xcode 5中使用iOS 6模拟器

Xcode 5 / iOS 7-本地化在模拟器中不起作用

XCode7实时版本中的iOS7模拟器?

在Xcode 7上使用iOS 8的设备模拟器

Xcode 10上的iOS模拟器崩溃

iOS模拟器无法安装应用程序?在Xcode 5中

仪器中仅Xcode 5.1的64位模拟器

iPad模拟器上SKScene的问题未在Xcode 11 beta 7中填充屏幕

Xcode 9.2模拟器崩溃

如何让应用程序在 XCode iOS 模拟器中崩溃

xcode gm ios 8 gm swift今天在模拟器和设备中扩展崩溃:库未加载:@ rpath / libswiftCore.dylib

重置模拟器后,iOS7中的应用程序崩溃

iOS7和Xcode5中的MRC

svprogresshud未在xcode5 ios7中显示

Ionic 5 图像选择器在 iOS 模拟器中崩溃

IOS UITableViewCells在第一个单元格(仅Iphone5S设备)中杂乱无章,只有64位模拟器

Xcode 5模拟器无法安装,不会显示在xcode中

在Xcode 5.0中使用JsonKit

Xcode 5-每次切换模拟器时,“ iOS模拟器无法安装应用程序”

Xcode 6中的iPad Retina模拟器和iPad Air模拟器有什么区别?

在没有XCODE 5的运行iOS7的设备上测试iOS 6应用

在iPad 1上部署iOS 5应用

解决Xcode 11 beta 5中的SwiftUI Path崩溃

Ratina 5K/4K 屏幕页脚下方的额外空间(与最大宽度相关)

在Xcode 5上的构建上运行(在设备上)“旧应用”后,xcode 6.0.1崩溃

Xcode 5-具有iOS7的设备上的错误接口

我可以下载Xcode 11 beta 5的iOS 13 beta 6模拟器吗?

Xcode 7,无法通过iPad Air 2的模拟器测试触摸ID?