【发布时间】:2018-01-07 15:07:14
【问题描述】:
我注意到 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)
其中observableIsHighlighted、observableIsMarked 只是BehaviorRelay<Bool>,大约需要 16-20 毫秒,这对于 UICollectionView 来说当然是不可接受的。
另一部分是这样的:
imageViewTapGestureRecognizer.rx.event.bind(onNext: { _ in
// do nothing
}).disposed(by: disposeBag)
大约需要 12 毫秒。
问题
是我的方法有问题还是 RxSwift 中的绑定对于 UICollectionView 之类的视图不准确?
当然,我假设 RxSwift 中的绑定完全适用于 UICollectionView 之类的东西。
编辑
我如何测量时间?
我用CACurrentMediaTime() 乘以1000。我知道这是最好的方法,但是非常简单的方法总是需要 0 ms,因此建议应该改进 10-20 ms 的方法。
【问题讨论】:
-
我很想知道您测量延迟的方式!
-
我正在使用 CACurrentMediaTime(),我知道这不是最好的方法,但我只是将代码放在实例化一个 CACurrentMediaTime() 和第二个 CACurrentMediaTime() 中,然后彼此相减。我想这还不错,因为代码的正常部分之间的减法只是 0。此外,我正在检查这一点,因为我的 UICollectionView 口吃。
-
我刚刚使用 CACurrentMediaTime 进行了测量,主要延迟为 0.06 毫秒。在后台发布并在 main 上收听时需要 3 毫秒。
-
你的意思是你测量了这部分代码,延迟只有0.06毫秒?我不知道该怎么想...
-
我明天会发布一些代码
标签: ios swift rx-swift reactivex rx-cocoa