CombineX.swift 0.0.1-beta.2

CombineX.swift 0.0.1-beta.2

jianstm 维护。



CombineX.swift 0.0.1-beta.2

  • Quentin Jin

CombineX(中文)

CombineX 是对 Apple 的 Combine 规范的开源实现。它允许您无需 macOS 10.15 或 iOS 13,也无需 Apple 平台,现在就可以使用 Combine 的 API。

目标

CombineX 将努力提供

  1. 与 Apple Combine 一致的行为达到 ~100%。
  2. 更多 Combine 没有但有非常实用的扩展。您可以在 [此处] 找到它们(https://github.com/CombineXCommunity)。

状态

兼容 Combine beta 5。

每周一将发布新的 beta 版本。

注意

这个库仍在 beta 测试中,请勿在生产环境中使用!请勿在生产环境中使用!

🐱

试试看

Swift 包管理器

在你自己的 Package.swift

pkg.dependencies.append(
    .package(url: "https://github.com/luoxiu/CombineX", ._branchItem("master"))
)

相关

  • CombineX.Foundation:提供所有基于 CombineXFoundation 扩展实现,例如 URLSessionNotificationCenterTimer 等。
  • CombineX.Compatible:提供 CombineX API Shims,帮助你解决迁移过程中可能出现的问题。

贡献

欢迎!CombineX 恢复寻找合作伙伴!

现在,CombineX 最需要的是测试。你可以

  1. 添加更多功能测试。
  2. 确保 Combine 可以通过它。
  3. 如果 CombineX 不能通过它,请打开一个问题,或者直接修复它!

流程

由于有些人可能没有安装 macOS 10.15 公测版,推荐的贡献方式是

  1. 建立项目的一个分支。
  2. 打开 Specs/Specs.xcworkspace,在你的 CombineX/CombineX 文件夹下进行更改。
  3. 所有测试都放在 CombineXTests/CombineXTests 文件夹中。确保你编写的测试通过了 SpecsCombineX 方案。

Combine 的错误

由于 Combine 目前仍处于公测阶段,因此存在错误是不可避免的。如果你发现了一些奇怪的地方,请打开一个问题与我们一起讨论,或者留下 // FIXME: 注释。实际上,CombineX 中已经有一些 FIXME 注释了。

其他

为什么写这篇?

  1. Combine 的系统版本限制非常严格(macOS 10.15+,iOS 13+)。这意味着即使您的应用只需要支持向前两个版本,您也需要等待近三年。
  2. Combine 是闭源项目。它和 UIKitMapKit 一样,随着 xcode 的更新而更新。当你遇到 bug 时,你必须在上一个系统库中遇到过 bug,调试非常令人恼火。更令人烦恼的是官方响应缓慢,通常您只能等待下一个常规的 xcode 更新。
  3. Combine 仅支持苹果平台,不支持 Linux。