【问题标题】:Xcode 8.2.1 & Swift 3.0.2 + Realm 2.4.x = Fatal Exception CrashXcode 8.2.1 & Swift 3.0.2 + Realm 2.4.x = 致命异常崩溃
【发布时间】:2017-01-31 03:21:55
【问题描述】:

所以我的基于 Swift 的 iOS 应用程序除了 Realm 之外没有其他非本机依赖项,​​自 Realm 2.4 起就发生了致命的崩溃。

我昨天第一次安装 Realm 2.4.1,看到崩溃,并回滚到 2.3,认为这是一个错误,所以这肯定只发生在 Realm 2.4 及更高版本中。

但是我今天刚刚安装了 Realm 2.4.2,我遇到了同样的崩溃,由于崩溃后提供的信息不足,我无法找出原因(空的调试控制台,我可以在线程中识别)。

当我从模拟器中删除应用程序然后从头开始构建时,崩溃发生在我的 Realm 设置代码的最后一行,并出现 EXC_BAD_ACCESS (code=1, address=0x0) 错误:

currentReminders = currentTab.reminders.sorted(byKeyPath: "reminderPosition", ascending: true)

在没有从模拟器中删除应用程序的后续构建/启动中,崩溃和错误消息是相同的,但它发生在不同的地方,尽管如此,它还是在尝试从 @987654324 获取提醒的线路上我的currentTab 对象中的@ 属性,这是一个提醒对象的列表。

自从升级到 Realm 2.4 后,还有其他人遇到过这种或类似的崩溃吗?

【问题讨论】:

  • 您是否尝试过执行完全干净的构建(产品 -> 干净)?
  • 由于bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh" 失败,进行清理导致编译错误。我什至不记得为什么在构建阶段需要那个 bash 命令,因为我已经很久没有遇到任何麻烦了。
  • Realm 文档的Installation 部分提到了该步骤。应用商店提交是必要的,因为它从 Realm 框架中删除了模拟器架构。如果失败,则可能表明运行脚本阶段在将框架复制到您的应用程序的构建阶段之前正在运行。您可以拖动阶段将其移动到构建阶段列表的底部。
  • 啊,是的,现在我想起来了。以前必须这样做一次。也没有更多的崩溃。一切终于正常了。谢谢!
  • 太棒了!那我会把我的评论移到一个答案上。

标签: ios swift xcode crash realm


【解决方案1】:

请尝试执行干净的构建。我们有seen reports 的 Xcode 在更新 Realm 版本时未能重建足够的应用程序,导致神秘的崩溃。干净的构建解决了这些问题。

【讨论】:

    猜你喜欢
    • 2015-07-02
    • 2020-07-22
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多