swift - 如何使用 Swift 2.3 和 3.0 编译模块?

标签 swift xcode cocoapods

我更新到 Xcode 8 并转换为最新的 Swift 3.0 语法。我的项目中有一些 Cocoapods,其中一些在 Swift 2.3 上(例如,一些较旧的 pod 需要将 Alamofire 设置为 v3.5,它运行 Swift 2.3)。

我已将这些 Pod 设置为使用 Legacy Swift -> 是的,但是在构建时出现错误:

Module complied with Swift 2.3 cannot be imported in Swift 3.0: /Users/....XSDK/XSDK.framework/swiftmodule/x86_64.swiftmodule

我不使用迦太基(在其他问题中引用)。只有 Cocoapods。

我需要将我的项目转换为使用 Swift 2.3 吗?或者我可以在我的项目中使用 Swift 3.0 并仍然使用旧版 Cocoapods 吗?

最佳答案

不幸的是,由于 Swift 不是 ABI 稳定的,你不能像这样组合 pod。这样做的原因是所有 swift pod(和框架、dylib、.a、.o 等)在编译后都需要引用巨大的 swift 标准库。标准库依赖于语言级别,您不能在单个应用程序中包含多个 swift 标准库副本。

自 swift 3 发布以来已经过了好几个月。此时,您可能想要跳转到 3。如果您发现一个 pod 还没有更新到 swift 3,也许可以 fork 并更新它并提交 pr。作者会爱你的! :)

关于swift - 如何使用 Swift 2.3 和 3.0 编译模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39524300/

相关文章:

objective-c - 在控制台中强制写入 Xcode 'Debugger Output'?

ios - 尝试读取不存在的文件夹`/private/tmp/CocoaPods/Lint/Pods/

swift - Swift 中的选项和字典

ios - iOS 8.3 中的调试 Realm

swift - 如何使 View Controller 扩展以适应较小屏幕上的布局?

iOS 应用程序首次启动加载条款和条件

ios - 使用未解析的标识符 'PhoneAuthProvider'

objective-c - 在 objective-c 或 swift 中覆盖 pod 文件方法的最佳实践是什么?

ios - Swift:使用字典中 ui 元素的值

ios - 如何避免快速持续触摸检测的延迟?