【问题标题】:EXC_BAD_ACCESS when trying to encode a subclass of a Codable-conformant class尝试对 Codable-conformance 类的子类进行编码时的 EXC_BAD_ACCESS
【发布时间】:2018-11-18 23:25:08
【问题描述】:

我一定是个白痴什么的,但我连续第三天摸不着头脑,不知道在我的 Swift 程序中编码一些 JSON 数据的意图出了什么问题...

情况如下: 我有两个类如下:

class Node: Codable {
    // Nothing in here
}

class Shape: Node {
    // No code here too
}

然后,我尝试将子类编码如下:

do {
    let encodedData = try JSONEncoder().encode(Shape())
} catch {
    print(error)
}

这就是我添加到一个空的 Single View App 项目中的全部内容。当我运行它时,我得到“线程 1:EXC_BAD_ACCESS (code=1, address=0x350)”崩溃。

当然,最初我的类曾经有很多可编码的属性。我以为是它们中的任何一个,所以我将它们剥离了,但似乎不是导致崩溃的属性...

我在 High Sierra MacBook Pro 上运行 Xcode 9.3。有没有人愿意重现这一点,或者有人已经将他的头撞到了这种奇怪的行为中?

【问题讨论】:

  • 这听起来很有希望。所以,那我的设置肯定有问题。关于重置或重新安装什么的任何想法?请注意,我创建了一个全新的项目,因此这应该排除以前对项目本身的更改造成的任何遗留问题。也许这与某种未对齐的设置有关?
  • 这正是我所做的,马特 :(
  • 是的,清理构建,然后关闭 Xcode,删除该特定项目的 DerivedData,删除 DerivedData 的 ModuleCache 子文件夹(不确定是否必须这样做),然后重新启动 Xcode。结果相同。我还能采取其他措施吗?
  • Matt,尽管我根本没有使用模拟器,但我还是按照你的建议删除了所有模拟器,退出 Xcode,完全清空 DerivedData 文件夹,包括 ModuleCache,重新启动 Mac,我们又来了 -优雅地崩溃...也许重新安装 Xcode 是下一步?

标签: ios json swift crash codable


【解决方案1】:

这是一个已知错误,您可以通过为 Debug 配置打开 Whole Module Compilation 模式或升级到 Xcode 10 beta 来解决它。

【讨论】:

  • bugs.swift.org/browse/SR-7743。我已将您的 github 项目添加到报告中,请不要将其删除。
  • Matt,确实,当我将编译模式(调试)从单个文件更改为整个模块时,现在一切都恢复正常了。我希望这是你提到的设置。你救了我的一天,呃,晚上!非常感谢找到问题的根源!当然,我不会很快取消它。
  • 是的,对不起,我的意思是编译,我在打字时对大脑进行了优化。
猜你喜欢
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2011-01-01
  • 2011-06-15
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
相关资源
最近更新 更多