iPad App 仅在 4.2 分发版本中崩溃

Posted

技术标签:

【中文标题】iPad App 仅在 4.2 分发版本中崩溃【英文标题】:iPad App Crashes in 4.2 Distribution build only 【发布时间】:2011-05-21 23:54:44 【问题描述】:

我有一个奇怪的问题,希望有人能解释一下。

我在 AppStore 中有一个 ipad 应用程序,它是在 3.2 是唯一的版本时发布的 适用于 ipad 的 ios。应用程序在这个 iOS 上运行良好,但 ipad 的 4.2.1 版本一出来 并且我的一些用户因此更新到新的 iOS 应用程序现在崩溃时 某些 UIBarButtonItem 被按下。从 iOS 3.2 到 iOS 的过渡 4.2.1 出来了,我没有提交任何更新,所以它是完全相同的应用程序运行 每个 iOS 但我只在 4.2 上遇到过这个问题

在 Organizer 中进行符号化并查看 Distribution 构建崩溃报告后 我至少能够看到导致这种情况的代码行......

while(i < [filteredData count]) 

就是这样!!...只是在 while 循环中进行简单检查。崩溃中的最后一件事 日志指向上面的代码行....

filteredData 是一个 NSMutableArray,它肯定在 这点。它实际上是在这之前的另一段代码中使用的,没有 问题。 同样,这行代码在 iOS 3.2 上给我的应用程序没有问题,但在 iOS 4.2.1 上它 导致 EXC_BAD_ACCESS (SIGSEGV)

当我通过带有调试或发布配置的 xcode 在我的设备上安装应用程序时,它运行良好,但是从 AppStore(分发版)安装时,它崩溃并且仅在 4.2 上!

只是为了澄清.....

应用程序在 3.2 上的调试和分发模式下完美运行

应用程序在 4.2 的调试模式下完美运行,但应用程序在 4.2 的分发模式下崩溃

有什么想法吗? .....因为我很困惑/迷路了 感谢您抽出宝贵时间

【问题讨论】:

当您进入Target 信息的构建点击时,分发配置和调试配置之间有什么区别? (判断任何字段是否存在差异的方法是选择“所有配置”,然后向下滚动并查找“多个值”或选中标记上的破折号。) 存在预期的路径差异(debug-iphoneos 与 distribution-iphoneos)。 “验证构建的产品”在分发时检查,而不是在调试时检查。在分发时检查设置“在复制期间剥离调试符号”,而不是在调试时检查。 “优化级别”在调试时为“无”,在分发时为“最快、最小”。其他 C 标志和 C++ 标志在调试时都是空白的,但在分发时它们是“-DNS_BLOCK_ASSERTIONS=1” 【参考方案1】:

可能是编译器在发布版本中进行的优化导致了这种情况,尤其是当您在调试中没有遇到问题时

你能重构成...

NSUInteger count = [filteredData count];
while(i < count) 

或者是filteredData在循环中发生变异?

NSUInteger count = [filteredData count];
while(i < count) 
   blah;
   blah;
   count = [filteredData count];

【讨论】:

是的,重构在这里根本不是问题。问题是我如何检查这是否有帮助?如前所述,它只发生在分发版本上,所以我该如何检查?您可能知道 AppStore 中的审批流程并不是最快的,因此需要数周和数周的时间才能缩小范围......更不用说让我的用户烦恼了,因为他们会不断获得没有修复的更新 不,只是重建为发布模式,但使用您的开发证书签名。看到这个。 ***.com/questions/4288964/… 会证明是不是优化级别的问题。您想在目标设置中将“优化级别”更改为“最快+最小” 嗯..是的,这似乎是一个优化问题。更改级别确实显示了崩溃,这是一个很好的原因,现在我实际上可以看到它正在发生并修复它。奇怪的是导致崩溃的代码行在while循环内......即使没有进入循环!至少我现在可以看到它...谢谢!! 它很奇怪......当我在发布模式下构建时,光电级别已经设置为最快+最小并且它没有崩溃。当我在调试模式下构建并且只是简单地将光电级别更改为最快+最小(从无)时,它确实会崩溃。我想我解决了我的问题,但只是好奇......发行版不是发行版的克隆吗?然而,它在分发时崩溃,在发布时不会崩溃,并且在调试时会崩溃,并提升了光电级别!我只是没有看到那里的模式。无论如何,感谢您的帮助!

以上是关于iPad App 仅在 4.2 分发版本中崩溃的主要内容,如果未能解决你的问题,请参考以下文章

CSS 动画仅在 iPad 上使 Phonegap App 崩溃

Javascript .Focus 导致 safari 8.1.3 仅在 iPad 上崩溃

应用程序在 iPad 1 上崩溃,而不是在 iPad 2 或第三代上

如何仅在 iTunes 中上传 iPad 版本?

如何调试仅在发布版本中发生的崩溃[关闭]

-initWithDocumentTypes iCloud 仅在生产版本中崩溃