0

我是一名项目经理,试图帮助我的开发人员;

我们有一个可以提交的构建;没有崩溃,测试是在 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"];
4

1 回答 1

0

两件事 - 首先,我们需要更多信息。崩溃日志的其余部分是什么?其次,同样重要的是,如果您在 iPhone 3G 上运行 RestKit(或其他任何东西),那么您必须绝对确定“Compile for Thumb”已关闭对于 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 创建另一个构建条件,然后选择/选中要打开的值。

在 RestKit 库中,您可能必须为它拥有的各种目标中的每一个执行此操作。

于 2011-07-31T22:48:09.260 回答