本库还在 beta,所以,还不可以把它用在生产中!
🐱
与 ReactiveCocoa 和 ReaciveSwift, RxCocoa 和 RxSwift 的关系一样,CXCocoa 是 CombineX 的衍生库。它为 Cocoa Framework 框架提供了 Combine 扩展,让你可以更方便地书写 Cocoa 相关的异步代码。
它包括但不限于:
- MethodPublisher/DeallocatePublisher,通过 Runtime 拦截方法调用
- KVOPublisher,通过 KVO 机制观察属性变化
- DelegateProxy,通过 Runtime 转发代理消息
- UIKit extensions(binder + property),订阅控件事件,绑定值
- UIScheduler
- ...
你可以自由地在 CombineX
和 Combine
之间切换底层依赖。
pod 'CXCocoa', :git => 'https://github.com/cx-org/CXCocoa.git', :branch => 'master'
github "cx-org/CXCocoa" "master"
看这里.
欢迎!任何时候任何形式的贡献都是欢迎的!!!
你可以:
- 添加更多的控件扩展,尤其是 macOS 控件
- 添加文档注释
- 提出你对本项目的建议
- Star!然后告诉你的朋友们!
因为上游 CombineX 还在测试阶段,如果你在本库遇到了奇怪的问题——那么它有不小可能是上游漂流下来的。🤣
你可以通过传入 USE_COMBINE
到 build configurations 来切换底层依赖到 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,ObjC 的部分几乎完全修改自它的源码。为他们的工作表示由衷的感谢!