RxObjC 2.0

RxObjC 2.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
已发布最新发布2017年1月

Pavel Malkov 维护。



RxObjC 2.0

  • Pavel Malkov

RxObjC: ReactiveX for Objective-C

RxObjC 是 ReactiveX 的 Objective-C 版本,基于 RxSwift

当前版本是 1.0 ~ 2.5 RxSwift。

RxObjC 1.0 仅包含 rx 的核心,不包含 RxCocoa 模块。

如何安装

使用 CocoaPods

⚠️重要!为了支持 tvOS,需要 CocoaPods 0.39⚠️

# Podfile
use_frameworks!

target 'YOUR_TARGET_NAME' do
    pod 'RxObjC', '~> 1.0'
end

# RxTests and RxBlocking make the most sense in the context of unit/integration tests
target 'YOUR_TESTING_TARGET' do
    pod 'RxBlocking', '~> 2.0'
    pod 'RxTests',    '~> 2.0'
end

模块

RxCocoa

(参见 RxSwift/RxCocoa)

  • KVO 扩展
  • Dealloc 观察

RxBlocking

(参见 RxSwift/RxBlocking) 一组用于 RxObjC 的阻塞运算符。这些运算符主要适用于单元/集成测试以及一些其他潜在有用的特殊场景。例如,在退出命令行应用程序之前等待可观察序列完成。

RxTests

(参见 RxSwift/RxTests) RxObjC 的单元测试扩展。此库包含模拟调度程序、可观察对象和观察者,它们可以使单元测试你的运算符变得与单元测试 RxObjC 内置运算符一样容易。此库包含编写以下方式所需的全部内容

- (void)testMap {
    RxTestScheduler *scheduler = [[RxTestScheduler alloc] initWithInitialClock:0];

    RxTestableObservable *xs = [scheduler createHotObservable:@[
            next(150, @1),
            next(210, @0),
            next(220, @1),
            next(230, @2),
            next(240, @4),
            completed(300)
    ]];

    RxTestableObserver *res = [scheduler startWithObservable:[xs map:^NSNumber *(NSNumber *o) {
        return @(o.integerValue * 2);
    }]];

    NSArray *events = @[
            next(210, @(0 * 2)),
            next(220, @(1 * 2)),
            next(230, @(2 * 2)),
            next(240, @(4 * 2)),
            completed(300),
    ];
    XCTAssertEqualObjects(res.events, events);

    XCTAssertEqualObjects(xs.subscriptions, @[
            Subscription(200, 300)
    ]);
}