【发布时间】:2019-12-30 17:04:21
【问题描述】:
如果我使用 swift 制作二进制框架,它会支持目标 C 项目吗?最低支持版本是多少?与Objective c框架相比,还有其他缺点吗?
【问题讨论】:
标签: ios objective-c swift cocoa-touch
如果我使用 swift 制作二进制框架,它会支持目标 C 项目吗?最低支持版本是多少?与Objective c框架相比,还有其他缺点吗?
【问题讨论】:
标签: ios objective-c swift cocoa-touch
是的,Swift 中的Binary frameworks 将支持 Obj-C 项目。请确保 Framework 项目的 Build Settings 中的 Obj-C 相关设置已启用。默认情况下会启用它来创建桥接头以与 Obj-C 互操作。
支持的最低操作系统版本
在 Swift 5 中实现了 Swift ABI 稳定性,现在,模块稳定性到位,无需在共享框架的同时发布 Swift 源代码。如果我们想共享库,可以创建和发布二进制框架 (xcframework),而无需担心 Swift 编译器版本不兼容错误。
由于二进制框架依赖于模块稳定性,进而依赖于 ABI 稳定性,因此它需要 OS 本身的 Swift 标准库。当 Xcode 10.2 发布时,Apple 开始在 OS 中包含 Swift 标准库,其中支持 Swift 5。这意味着,iOS Always Embed Swift Standard Libraries”设置为“是”。否则,它将在运行时崩溃。因此,对于操作系统版本,我们认为这是唯一的限制。
我能够在 Swift 中使用二进制框架运行纯 Obj-C 项目,即使在 iOS 9 模拟器中也是如此。
使用二进制框架的优势
可以为所有设备、模拟器和所有平台(iOS、MacOS、watchOS、tvOS)创建 swift 中的二进制框架。它是适用于所有平台的单一库。
我们不需要在框架中发布实际的 swift 源代码。它已经解决了 Swift 编译器不兼容的问题。
与 Obj-C 的互操作性简单而轻松,反之亦然。
希望对你有帮助。
【讨论】: