AsyncCompatibilityKit

欢迎使用 AsyncCompatibilityKit,这是一个轻量级的 Swift 包,它为常用的、基于 async/await 的系统 API 添加了与 iOS 13 兼容的向后移植版本。这些 API 默认情况下仅在 iOS 15 及更高版本中可用。

目前,它包含以下 API 的向后兼容版本:

所有包含的向后移植版本都具有与其各自系统 API 匹配的签名。因此,一旦您准备好将 iOS 15 作为您的最低部署目标,您应该可以简单地从您的项目中取消链接 AsyncCompatibilityKit,而无需对您的代码库进行任何其他更改(除了删除所有 import AsyncCompatibilityKit 语句)。

AsyncCompatibilityKit 甚至会在集成到基于 iOS 15 的项目中时,将所有添加的 API 标记为已弃用,以便在您可以直接使用匹配的系统 API 时,提醒您不再需要它(截至 Xcode 13.2,似乎在 SwiftUI 视图中没有显示此类弃用警告)

但是,重要的是要指出,AsyncCompatibilityKit 提供的实现可能无法在行为方面与其系统等效项完全匹配,因为这些系统实现是闭源的,并且是 Apple 私有的。编写此库没有涉及任何逆向工程。相反,包含的每个 API 都是对其旨在匹配的系统 API 的完整重新实现。因此,强烈建议您在将代码部署到生产环境之前,彻底测试任何使用这些向后移植版本的代码。

要了解有关用于实现这些向后移植以及一般的 Swift 并发的更多信息,请查看 Swift by Sundell 上的 Discover Concurrency

安装

AsyncCompatibilityKit 使用 Swift Package Manager 进行分发。要安装它,请使用 Xcode 的 File > Add Packages... 菜单命令将其添加到您的 iOS 应用程序项目中。

然后,在您想要使用它的任何地方导入 AsyncCompatibilityKit

import AsyncCompatibilityKit

有关如何使用 Swift Package Manager 的更多信息,请查看这篇文章,或 其官方文档

请注意,AsyncCompatibilityKit 不应集成到最低部署目标为 iOS 13 或更高的 iOS 应用程序项目以外的目标中。它还需要 Xcode 13.2 或更高版本。

支持和贡献

AsyncCompatibilityKit 在非常宽松的 MIT 许可证 下免费提供给整个 Swift 社区,但请注意,它不附带任何官方支持渠道,例如 GitHub 问题或基于 Twitter/电子邮件的支持。因此,在您开始在您的项目中之一中使用 AsyncCompatibilityKit 之前,强烈建议您花一些时间熟悉它的实现,以防您遇到任何需要调试的问题。

如果您发现错误、文档错字,或者想要提出性能改进建议,请随时打开一个 Pull Request(即使它只包含一个重现给定问题的单元测试)。虽然欢迎各种修复和调整,但 AsyncCompatibilityKit 应该是一个非常小而集中的库,并且应该只包含基于 async/await 的系统 API 的简单向后移植。因此,如果您想向库中添加任何重要的新功能,建议您 fork 它,这将使您可以扩展和自定义它以满足您的需求。

希望您喜欢使用 AsyncCompatibilityKit!