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

Posted

技术标签:

【中文标题】Swift 3 会破坏与 Carthage 集成的动态框架吗?【英文标题】:Will Swift 3 break dynamic frameworks integrated with Carthage? 【发布时间】:2016-06-02 14:13:01 【问题描述】:

这么快苹果就要发布 Swift 第三次迭代了,这既令人兴奋又令人恐惧。

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

但是,这很容易采用,我更怕项目管理不会编译(退出代码1)。比如使用与 Carthage 集成的动态框架,针对特定的构建参数,或使用带有桥接头的 objc 库。

有谁知道 Swift 3 是否会抱怨 Carthage 框架,除了它们中的过时语法吗?还是上一段中所述的所有其他要点?

【问题讨论】:

我认为上述框架的维护者必须适应 Swift 3 的变化。例如,升级库的主要版本并更新新的 Swift 语法。然后框架的用户可以简单地在他们的依赖文件中指定版本要求,如果他们仍然需要 Swift 2,那么继续使用旧版本的库,如果他们已经迁移到 Swift 3,则指定需要不低于版本的库。就是这样。不用担心。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

现在我的项目在 Swift 3 中启动并运行,为最终版本做好准备:)

【讨论】:

以上是关于Swift 3 会破坏与 Carthage 集成的动态框架吗?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中

将 swift 更新到 4.0 版后 Carthage Build 失败

使用 carthage 的 RealmSwift 框架集成问题

ios Carthage

iOS Carthage集成SnapKit

简陋的swift carthage copy-frameworks 辅助脚本