中文)
CombineX.Cocoa(注意
这个库仍然处于测试阶段,因此请不要在生产环境中使用!
什么是 CombineX.Cocoa
类似于 ReactiveCocoa 和 ReaciveSwift, RxCocoa 和 RxSwift,CXCocoa 是 CombineX 的衍生品。它为 Cocoa 框架提供 Combine 扩展,允许您以优雅的方式编写与 Cocoa 相关的异步代码。
其中包括但不限于:
- MethodPublisher/DeallocatePublisher,通过方法替换截获方法调用
- KVOPublisher,通过 KVO 机制观察属性变更
- DelegateProxy,代理委托消息
- UIKit 扩展(binder & property),订阅控件事件并绑定值
- UIScheduler
- ...
您可以在 CombineX
和 Combine
之间自由切换底层依赖。
示例
安装
CocoaPods
# forcing master branches for now.
pod 'CombineX', :git => 'https://github.com/cx-org/CombineX.git', :branch => 'master'
pod 'CXFoundation', :git => 'https://github.com/cx-org/CXFoundation.git', :branch => 'master'
pod 'CXCocoa', :git => 'https://github.com/cx-org/CXCocoa.git', :branch => 'master'
Carthage
github "cx-org/CombineX" "master"
github "cx-org/CXFoundation" "master"
github "cx-org/CXCocoa" "master"
什么是Combine/CombineX
点击 此处 查看详细信息。
贡献
欢迎!我们随时欢迎各种形式的贡献!
您可以为以下方面贡献力量:
- 添加更多的控制扩展,特别是为macOS控件。
- 添加文档。
- 提出您的建议(新功能、改进、错误等)
- Star!然后告诉您的朋友们!
因为CombineX的源代码仍然处于测试阶段,如果您在这个库中遇到奇怪的问题,那么它可能与上游代码有偏差。
与Combine一起使用
您可以通过将其传递给目标的构建配置中的USE_COMBINE
,将基本依赖项更改为Combine
。例如,如果您正在使用CocoaPods,您可以根据下述修改您的podfile。
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == 'CXExtensions'
target.build_configurations.each do |config|
config.build_settings['OTHER_SWIFT_FLAGS'] = '-DUSE_COMBINE'
end
end
end
end
如果您正在使用Carthage,您应该能够使用XCODE_XCCONFIG_FILE
来完成这项操作。
致谢
该库的实现参考了ReactiveCocoa和RxCocoa,特别是ReactiveCocoa,Objective-C部分基本全部修改自其源代码,真心感谢他们出色的作品!