Xcode 7 命令因信号而失败:非法指令 4
Xcode 7 command failed due to signal: illegal instruction 4
我刚刚使用 Xcode 7 的迁移工具将一个项目从 Swift 1.2 迁移到 2。修复遗漏的错误等之后,一切都很好,除了一个错误使我什至无法建筑:命令因信号而失败:非法指令 4。
我已经尝试了这些文章 (Xcode 7 and Swift 2.0 : Command failed due to signal: Abort trap: 6, and Command failed due to signal: Abort trap: 6) 中的帮助,它们与我的问题不同,但仍然无法解决问题。
我已经清理了构建并删除了派生数据文件夹。我有最新的 CocoaPods 安装,Xcode 工具是 7.0,我 Swift 编译优化是 None。还有什么我想念的吗?
谢谢!
'Illegal instruction' 只是意味着您的二进制文件包含的指令对于您尝试 运行 代码的架构类型无效。开始查看项目构建设置中的最低版本。
所以在同事的帮助下找到了答案。我们在构建错误中找到了有问题的文件,但没有提供任何行。通过排除的过程,我们发现它是声明一个新常量的行,它从一个JSON字典([String : AnyObject],typealiased to JSONDictionary)中得到一个结果可选词典。这是行:
let objectsDictionary = maybeJSON?[key] as? JSONDictionary
将其更改为两个保护语句:
guard let goodJSON = maybeJSON as? JSONDictionary else { return ... }
guard let objectsDictionary = goodJSON[key] as? JSONDictionary else { return ... }
此行在 Xcode 6.3.2 中有效,因为它只提供一个可选值,但由于某些原因,Xcode 7 中的某些更改不喜欢这样。我希望这可以帮助遇到此问题的其他人。
我刚刚使用 Xcode 7 的迁移工具将一个项目从 Swift 1.2 迁移到 2。修复遗漏的错误等之后,一切都很好,除了一个错误使我什至无法建筑:命令因信号而失败:非法指令 4。
我已经尝试了这些文章 (Xcode 7 and Swift 2.0 : Command failed due to signal: Abort trap: 6, and Command failed due to signal: Abort trap: 6) 中的帮助,它们与我的问题不同,但仍然无法解决问题。
我已经清理了构建并删除了派生数据文件夹。我有最新的 CocoaPods 安装,Xcode 工具是 7.0,我 Swift 编译优化是 None。还有什么我想念的吗?
谢谢!
'Illegal instruction' 只是意味着您的二进制文件包含的指令对于您尝试 运行 代码的架构类型无效。开始查看项目构建设置中的最低版本。
所以在同事的帮助下找到了答案。我们在构建错误中找到了有问题的文件,但没有提供任何行。通过排除的过程,我们发现它是声明一个新常量的行,它从一个JSON字典([String : AnyObject],typealiased to JSONDictionary)中得到一个结果可选词典。这是行:
let objectsDictionary = maybeJSON?[key] as? JSONDictionary
将其更改为两个保护语句:
guard let goodJSON = maybeJSON as? JSONDictionary else { return ... }
guard let objectsDictionary = goodJSON[key] as? JSONDictionary else { return ... }
此行在 Xcode 6.3.2 中有效,因为它只提供一个可选值,但由于某些原因,Xcode 7 中的某些更改不喜欢这样。我希望这可以帮助遇到此问题的其他人。