Swift 3 会破坏与 Carthage 集成的动态框架吗?

Will Swift 3 break dynamic frameworks integrated with Carthage?

很快 Apple 将发布 Swift 第三次迭代,既令人兴奋又令人恐惧。

我看到它不会与以前的版本向后兼容,并且通过 Swift evolution 回购,我了解到它会因为不支持 i++ 等语法更改或修改参数而中断函数等..

但是,这个很容易采用,我更怕项目管理编译不通过(exit code 1)。就像使用与 Carthage 集成的动态框架,针对特定的构建参数,或使用带有桥接的 objc 库 headers.

有谁知道 Swift 3 是否会抱怨 Carthage 框架除了其中的语法过时之外?还是以上段落中所述的所有其他要点?

是的,它会坏掉。对 clang-importer 进行了根本性的更改,clang-importer 是负责将 Objective-C 转换为 Swift 的编译器组件。这意味着桥接头已更改。此外,Objective-C 也发生了根本性的变化。不过,我认为它不会像您描述的那样简单。

来源:https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md

好吧,现在 Xcode 8 GM 版本发布了,我可以开始迁移我的项目了,虽然最困难的部分是使用 Carthage 构建的第三方库,但它并没有我那么糟糕曾经想过(大多数库已经支持 swift 3,如果没有,您可以随时分叉,转换为现代语法并使用它,只是不要忘记创建 PR)。

现在我的项目已经完成,运行 在 Swift 3 中,准备好最终发布:)