【问题标题】:Swift compiler optimisation -O doesn't works after adding Bridging-Header.h添加 Bridging-Header.h 后,Swift 编译器优化 -O 不起作用
【发布时间】:2015-01-17 13:28:53
【问题描述】:

出于某些原因,我试图比较 Swift 和 ObjectiveC 的性能。 为方便起见,我制作了简单的命令行 Swift 项目并在其中添加了 ObjectiveC 代码。 调试配置中的构建和运行正常。 但是 Run in Release 配置给了我以下编译器错误:

命令 /Applications/Xcode-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc 失败,退出代码为 1

当然,我可以通过在构建设置的优化级别中设置-Onone来修复此错误。

但正如我上面所说,我需要在最高性能模式下比较代码。

这就是为什么 -Onone 不是一个选项的原因。 你可以看看on project here

有谁知道如何摆脱这个错误?

提前感谢您!

【问题讨论】:

    标签: objective-c xcode swift compiler-errors compiler-optimization


    【解决方案1】:

    问题是在扩展方法中定义的class Array2D levenshteinDistanceFromStringSwift。我不知道这是否是一个错误,但是 如果你

    • 将类移动到全局级别,
    • class Array2D 更改为struct Array2D

    然后您的项目也会在发布模式下编译和运行。

    【讨论】:

    • 此限制是否记录在某处?
    • @Alexey:我不知道 :) 查看更新的答案以获得替代解决方案。
    • @Alexey:顺便说一句,您的 Array2D 版本存在内存泄漏,因为分配的内存永远不会被释放。 for i in 0...cols*rows 也应该是for i in 0..<cols*rows,否则你写超出分配的内存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 2017-08-24
    • 2016-09-19
    • 1970-01-01
    相关资源
    最近更新 更多