中文)
CombineX(CombineX 是对 Apple 的 Combine 规范的开源实现。它允许您无需 macOS 10.15 或 iOS 13,也无需 Apple 平台,现在就可以使用 Combine 的 API。
目标
CombineX
将努力提供
- 与 Apple Combine 一致的行为达到 ~100%。
- 更多
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:提供所有基于
CombineX
的Foundation
扩展实现,例如URLSession
、NotificationCenter
、Timer
等。 - CombineX.Compatible:提供
CombineX
API Shims,帮助你解决迁移过程中可能出现的问题。
贡献
欢迎!CombineX 恢复寻找合作伙伴!
现在,CombineX 最需要的是测试。你可以
- 添加更多功能测试。
- 确保
Combine
可以通过它。 - 如果
CombineX
不能通过它,请打开一个问题,或者直接修复它!
流程
由于有些人可能没有安装 macOS 10.15 公测版,推荐的贡献方式是
- 建立项目的一个分支。
- 打开
Specs/Specs.xcworkspace
,在你的CombineX/CombineX
文件夹下进行更改。 - 所有测试都放在
CombineXTests/CombineXTests
文件夹中。确保你编写的测试通过了Specs
和CombineX
方案。
Combine 的错误
由于 Combine
目前仍处于公测阶段,因此存在错误是不可避免的。如果你发现了一些奇怪的地方,请打开一个问题与我们一起讨论,或者留下 // FIXME:
注释。实际上,CombineX
中已经有一些 FIXME
注释了。
其他
为什么写这篇?
Combine
的系统版本限制非常严格(macOS 10.15+,iOS 13+)。这意味着即使您的应用只需要支持向前两个版本,您也需要等待近三年。Combine
是闭源项目。它和UIKit
、MapKit
一样,随着 xcode 的更新而更新。当你遇到 bug 时,你必须在上一个系统库中遇到过 bug,调试非常令人恼火。更令人烦恼的是官方响应缓慢,通常您只能等待下一个常规的 xcode 更新。Combine
仅支持苹果平台,不支持 Linux。