OpenCombine
Apple 的 Combine 框架的开源实现,用于处理随时间推移的值。
本项目的目标是提供兼容、可靠和高效的实现,可用于 macOS 10.15 和 iOS 13 之前的 Apple 操作系统,以及 Linux、Windows 和 WebAssembly。
CI 状态 |
---|
安装
OpenCombine
包含三个公开目标:OpenCombine
、OpenCombineFoundation
和 OpenCombineDispatch
(第四个,即 COpenCombineHelpers
,被认为是私有的。不要在您的项目中导入它)。
OpenCombine
本身没有任何依赖。即使是 Foundation 或 Dispatch。如果您想将 OpenCombine
与 Dispatch
一起使用(例如,将 DispatchQueue
作为类似 debounce
、receive(on:)
等操作符的 Scheduler
),则需要导入 OpenCombine
和 OpenCombineDispatch
。类似地适用于 Foundation:如果您想使用例如 NotificationCenter
或 URLSession
发布者,则需要导入 OpenCombineFoundation
。
如果您为多个平台开发代码,可能更方便地导入 OpenCombineShim
模块。它在 Apple 平台上条件性地重新导出 Combine(如果可用),并在其他平台上导出所有 OpenCombine 模块。您只能在使用 SwiftPM 时导入 OpenCombineShim
。它目前对 CocoaPods 不可用。
Swift 软件包管理器
Swift 软件包
要将 OpenCombine
添加到您的 SwiftPM 软件包中,请将 OpenCombine
软件包添加到 Package.swift
文件中软件包和目标依赖项的列表中。暂时不支持在 WebAssembly 上使用 OpenCombineDispatch
和 OpenCombineFoundation
产品。如果您专攻 WebAssembly,应从依赖项列表中省略它们。如果目标是多个平台包括 WebAssembly,请只在这些非 WebAssembly 平台上依赖它们,使用 条件目标依赖。
dependencies: [
.package(url: "https://github.com/OpenCombine/OpenCombine.git", from: "0.14.0")
],
targets: [
.target(
name: "MyAwesomePackage",
dependencies: [
"OpenCombine",
.product(name: "OpenCombineFoundation", package: "OpenCombine"),
.product(name: "OpenCombineDispatch", package: "OpenCombine")
]
),
]
Xcode
OpenCombine
也可以直接在 Xcode 项目中作为 SwiftPM 依赖项添加 (需要 Xcode 11 或更高版本)。
要这样做,打开 Xcode,使用 文件 → Swift 软件包 → 添加软件包依赖项…,输入 仓库 URL,选择最新版本,并激活复选框
CocoaPods
要使用 CocoaPods 向项目添加 OpenCombine
,将在 Podfile
中添加 OpenCombine
和 OpenCombineDispatch
到目标依赖项列表中。
pod 'OpenCombine', '~> 0.14.0'
pod 'OpenCombineDispatch', '~> 0.14.0'
pod 'OpenCombineFoundation', '~> 0.14.0'
调试器支持
文件 opencombine_lldb.py
定义了一些 lldb
类型摘要,以便于调试。这些类型摘要改进了 lldb
和 Xcode 显示一些 OpenCombine 值的方式。
要使用 opencombine_lldb.py
,查明其完整路径。假设完整路径为 ~/projects/OpenCombine/opencombine_lldb.py
。然后在你的 ~/.lldbinit
文件中添加以下语句
command script import ~/projects/OpenCombine/opencombine_lldb.py
目前,opencombine_lldb.py
为以下类型定义了类型摘要
Subscribers.Demand
- 现在先到这里。