在 RxSwift 中订阅 Observable 或 Driver 花费的时间太长

Subscribing to Observable or Driver takes too long in RxSwift

我注意到 RxSwift 拖慢了应用程序,我不知道这是我的错还是框架的问题。

我在 UICollectionViewCell 的自定义 class 内部进行了绑定,它是为配置单元格而触发的。例如这部分代码:

viewModel.observableIsHighlighted.asDriver().drive(onNext: { isHighlighted in
    // do nothing
}).disposed(by: disposeBag)
viewModel.observableIsMarked.asDriver().drive(onNext: { isMarked in
    // do nothing
}).disposed(by: disposeBag)

其中 observableIsHighlightedobservableIsMarked 只是 BehaviorRelay<Bool>,大约需要 16-20 毫秒,这对于 UICollectionView 当然是不可接受的。

另一部分是这样的:

imageViewTapGestureRecognizer.rx.event.bind(onNext: { _ in
    // do nothing
}).disposed(by: disposeBag)

大约需要 12 毫秒。

问题

是我的方法有问题还是 RxSwift 中的绑定对于 UICollectionView 这样的视图不准确?

当然,我假设 RxSwift 中的绑定正是针对 UICollectionView.

之类的东西

编辑

我如何测量时间?

我用 CACurrentMediaTime() 乘以 1000。我知道这是最好的方法,但是非常简单的方法总是需要 0 毫秒,因此建议应该改进 10-20 毫秒的方法。

我不敢相信,但我在我的 Podfile 中将 RxSwiftRxCocoa4.0 更新为 4.1.0,现在它可以完美运行了。

问题中的方法现在大约需要 0-1 毫秒。

希望这个问题能对其他人有所帮助,或者也许有人会知道我为什么会遇到这种行为。