gpt4 book ai didi

swift - 在 Swift 标准库中诊断 EXC_BAD_INSTRUCTION

转载 作者:IT王子 更新时间:2023-10-29 05:43:01 29 4
gpt4 key购买 nike

我在 iOS 模拟器中运行的 Swift 应用程序在调试器中停止,出现运行时错误 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, sub code=0x0)

根据WWDC 2014 Session 409这通常是由于断言失败。

在当前的 Xcode 6 开发 Beta 版本中,调试器的堆栈跟踪和上述错误没有提供足够的信息来判断问题所在。如何找出问题所在?

最佳答案

看起来这个错误的最常见来源(在撰写本文时:Xcode 6 Beta 1)是一些隐式展开的可选属性或变量是 nil

为方便起见,大多数 Objective-C API 都通过 implicitly unwrapped optionals 桥接到 Swift。 .它们由类型声明后面的感叹号表示:AnyObject[]!

  • 如果调试器在您的代码中停止,请仔细检查该行并寻找隐式解包的可选值,它们可能是 nil

  • 有时,调试器会因 Swift 系统库深处的运行时错误而停止。例如,当您将闭包传递给 filtermapreduce 等集合方法时,就会发生这种情况。然后运行时错误发生在这些库函数的调用站点,但定义可能在代码的不同部分,即您定义函数/闭包的地方。在那里寻找在运行时可能为 nil 的隐式解包选项。

要防止这些类型的错误,请注意即使 Swift 编译器不会强制您处理从 Cocoa 返回的潜在 nil 值,您应该使用 optional binding , optional chainingoptional downcasting Objective-C 领域的返回值可能为 nil

我们希望 Swift 编译器的 future 版本将开始针对这种常见类型的问题发出更多有用的诊断消息和错误!

关于swift - 在 Swift 标准库中诊断 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189738/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com