我是项目经理,试图帮助我的开发人员;
我们有一个准备提交的构建;免费崩溃,测试是在iPad上完成的。第二天,当我们开始在iPod和iPhone 3G上进行测试时,我们注意到了一大堆崩溃事件。我们重新安装了iPad上的内置设备,并且看到了一大堆崩溃事件。
我们注意到,当您重新启动设备并重新安装应用程序时,崩溃似乎根本没有发生,一切都会在前几分钟看起来不错,然后您就会崩溃。奇怪的是,之后应用程序很容易崩溃。
崩溃主要发生在应用程序的一个特定屏幕上,崩溃似乎并不特定于我们可以告诉的操作。我们正在连接到第三方API以在屏幕中填充数据,我们正在使用Restkit。崩溃有时似乎源自Restkit。下面是我们得到的错误日志示例:
0 libobjc.A.dylib 0x34f70ca4 objc_msgSend + 28
1 CoreFoundation 0x325ae0b8 __CFBasicHashStandardRetainValue + 8
2 CoreFoundation 0x325abb30 __CFBasicHashReplaceValue + 44
3 CoreFoundation 0x32505f98 CFDictionarySetValue + 68
4 CoreFoundation 0x3250c94e -[__NSCFDictionary setObject:forKey:] + 54
5 Foundation 0x34d8a31a -[NSMutableDictionary(NSKeyValueCoding) setValue:forKey:] + 10
6 nameofapp 0x000ae958 -[RKClient setValue:forHTTPHeaderField:] (RKClient.m:173)
7 nameofapp 0x000086ae -[WebServer addCustomHeaders:] (WebServer.m:140)
8 nameofapp 0x000088ea -[WebServer getDoD:objectTarget:] (WebServer.m:197)
和
WebServer.m:140 [[objectManager client] setValue:@"text/json"
forHTTPHeaderField:@"X-ZFWS-Accept"];
答案 0 :(得分:0)
两件事 - 首先,我们需要更多信息。崩溃日志的其余部分说什么?其次,同样重要的是,如果您在iPhone 3G上运行RestKit(或其他任何事情),那么您必须绝对确定“Compile for Thumb”已经关闭< / strong>适用于ARMv6架构。我注意到很多我的各种神秘崩溃只是通过确保为ARMv7打开“Compile for Thumb”,但是为ARMv6打开了。 iPhone 3G(可能还有你的iPod)使用没有Thumb支持的ARMv6架构。当针对v6打开Thumb时,不知道它是如何工作的(因为芯片正在变坏指令)。但是,不要简单地关闭Thumb,因为你可以在iPhone 4和iPad等新设备上获得巨大的速度。
在Xcode项目中,打开构建设置并单击“Compile for Thumb”标题,然后从齿轮菜单中选择“添加构建设置条件”选项。将“Any SDK”更改为“Any iOS”并将“Any Architecture”更改为“ARMv6”,然后确保未选中“Value”。现在做同样的事情,为ARMv7创建另一个Build Condition,并选择/检查要启用的值。
在RestKit库中,您可能必须为它拥有的每个目标执行此操作。