SwiftUI:线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

Posted

技术标签:

【中文标题】SwiftUI:线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)【英文标题】:SwiftUI :Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 【发布时间】:2020-08-08 13:07:41 【问题描述】:

我是 SwiftUI 新手,目前正在开发我的第一个大型应用程序。程序在模拟器中成功运行,但是模拟器屏幕全白,我收到错误:

线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

在 AppDelegate 中(我没有对其进行任何更改) 该应用程序已经包含多个文件,但是无论我检查多少次,我都无法在我的代码中找到任何问题。我应该寻找哪种类型的错误?

【问题讨论】:

"应用程序。程序在模拟器中成功运行,但模拟器屏幕全白" 您认为全白屏幕“运行成功”? 这说明不了什么。你会显示代码吗?你会提供崩溃的回溯(在调试控制台类型bt all一旦崩溃发生)? 【参考方案1】:

在 Swift 代码的上下文中,

EXC_BAD_INSTRUCTION

通常意味着您遇到了编译器陷阱,即由于在运行时检测到错误,编译器将未定义的指令插入代码中。最常见的原因是: 未能打开可选的 -

    这可以是强制解包 (!) 或隐式解包(访问 nil 的隐式解包选项)。 数组越界 强制强制转换失败(as!),要么是因为值是 nil 可选,要么是因为值的类型错误

您可以通过创建异常断点来调试此问题。顾名思义,这会在执行引发此异常的行之前停止代码执行。

要在 Xcode 中创建异常断点,请转到 BreakPoint navigator -> 单击左下角的 + 图标 -> 选择异常断点。

更多关于断点的信息请查看link

【讨论】:

以上是关于SwiftUI:线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - WKWebView 的 iOS 13 UIViewRepresentable 获取线程 1:EXC_BREAKPOINT 崩溃

SwiftUI:线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

SwiftUI-> 线程 1:致命错误:未找到 MyObject.Type 类型的可观察对象(工作表中的 EnvironmentObject)

为啥 Swiftui 中主线程不按顺序排列

Swift 访问 SwiftUI Init() 中的核心数据实体? (线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

Swift/SwiftUI - 删除键盘上方的空间