在RxSwift中订阅Observable或Driver需要太长时间

时间:2018-01-07 15:07:14

标签: ios swift rx-swift reactivex rx-cocoa

我注意到RxSwift减慢了应用程序的速度,我不知道这是我的错还是框架。

我在UICollectionViewCell的自定义类中有绑定,这是为配置单元格而触发的。例如,这部分代码:

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毫秒的方法,应该得到改进。

1 个答案:

答案 0 :(得分:2)

我无法相信,但我在RxSwift内的RxCocoa更新了4.1.04.0Podfile,现在效果非常好。

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

希望这个问题可以帮助别人,也许任何人都知道我为什么会遇到这种行为。