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 失败