为啥我的 iPhone 应用程序的发布版本在安装后第一次运行时会在设备上崩溃?

Posted

技术标签:

【中文标题】为啥我的 iPhone 应用程序的发布版本在安装后第一次运行时会在设备上崩溃?【英文标题】:Why does the release build of my iPhone app crash on the device on the first run after installation?为什么我的 iPhone 应用程序的发布版本在安装后第一次运行时会在设备上崩溃? 【发布时间】:2010-05-10 22:19:14 【问题描述】:

我有一个 iPhone 应用程序已经开发了大约 2 周。我们最近在设备上尝试了构建的“发布”版本,令我们非常不高兴的是,它在一个视图中崩溃并显示“EXC_BAD_ACCESS”。

此崩溃仅发生在设备上,并且仅在“发布”版本中发生。不仅如此,它只会在应用程序第一次启动时发生!它也是 100% 可重现的。

我们已经删除了处理数据持久性的一小段代码,并尝试了重新打开 Xcode、清理项目、删除和重新安装应用程序等,正如其他一些问题所暗示的那样。

对于 a) 可能导致此问题的原因,以及 b) 如果仅在“发布”中发生,如何进行调试?

谢谢

【问题讨论】:

【参考方案1】:

事实证明,代码完全没有问题。

它崩溃的原因是 Xcode 出于某种原因试图将调试器附加到发布版本!我们仍在试图找出原因,因为我们已经检查了最明显的地方,但我相信追踪起来不会太难。

如果您从 iTunes 或 Xcode 管理器安装而不是直接从 Xcode 构建和运行,则构建工作正常,因此它根本不会影响您的最终用户,只要您仔细检查其他第一 -运行问题。

【讨论】:

@MaciejSwic:哈哈,我很高兴能提供帮助!这可能是我在 ios 中遇到的最令人沮丧的错误! 我好像有这个问题。我的应用程序构建被苹果拒绝,“启动时崩溃”,但在我的最后运行良好。我遇到加载崩溃的唯一方法是,如果我在运行时将应用程序设置为 Build for release。你是如何解决这个崩溃的,这听起来像你得到的吗? 不,抱歉。在我的应用程序中,只有当我从 Xcode 运行它时才会发生这种情况。如果它在没有调试器的情况下崩溃,那么你有一个比我的更难的错误,你必须尝试更深入地挖掘。 只有在我从 Xcode 设置为发布版本运行它时才会崩溃,并且只有在它第一次运行时才会崩溃。如果我使用调试版本从 Xcode 运行它,它不会崩溃。如果我在没有 Xcode 的情况下运行发布版本,它不会崩溃。 哦。在那种情况下,这正是这种行为。但是,我不确定苹果为什么会拒绝它。您是否尝试过将其存档并通过 iTunes 自行安装?我真的不知道我还能提供什么建议。一旦我意识到这是 Xcode 的错,我就停止调查我的问题。【参考方案2】:

我们只能猜测可能的原因,但如果它是 100% 可重现的,那么它应该是一些 fprintf 样式调试的好候选。

找出最可能发生错误的地方,并开始输入“已通过 xxx 视图初始化”样式语句以开始缩小问题范围。这很乏味,但最终,你会到达那里。

理论上 fprintf 语句可能会影响问题。但是,这种情况很少见,所以这是一个很好的起点。

【讨论】:

感谢 Wade,我喜欢这个想法,并且之前在其他平台上使用过这种技术。但是我的应用程序是否有权仅在 iPhone 上使用fopen(n,"w") 文件?我以为我不会被允许。 老实说,我不确定克里斯 - 但必须有某种方法来写入数据。 哈哈。好的,我认为那样是越狱iPhone并赋予自己权利。 ;D iPhone 只允许你通过它的框架调用编写,我相信。感谢您的意见!这个bug让我很生气。 =P

以上是关于为啥我的 iPhone 应用程序的发布版本在安装后第一次运行时会在设备上崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在我的 iPhone 上安装 IPA 吗?

为啥我的 iPhone 应用程序被列为 iPad 兼容?

为啥我的 iPhone 应用程序包在更新期间没有替换旧的应用程序包?

为啥苹果的微信版本和vivo的不一样

为啥在 conda 安装后 Tensorflow 无法识别我的 GPU?

为啥 iPhone 应用程序在获得请求和展示次数后也没有从广告中获得任何收入? [关闭]