У меня настоящая специфическая проблема.Я обычно получал это, и я не мог найти почему.
Основная проблема, хотя я использую disposeBag некоторые из моих вызовов «subscribe (onNext:» »несколько раз. Но я нашел кое-что; число вызовов увеличилось линейнозависит от другой подписки.
Например, у меня есть два компонента, объявленных в viewController. Один, если это настраиваемое представление коллекции, а другой - настраиваемый менеджер управления обновлением.
self.kpiesCollectionView.collectionHeaderButton.rx.tap
. subscribe(onNext: { [weak self] _ in
// Push to next ViewController
}).disposed(by: self.kpiesCollectionView.disposeBag)
refreshControl.rx.controlEvent(UIControlEvents.valueChanged).asObservable().subscribe(onNext: { () in
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {
completion()
}
}).disposed(by: disposeBag)
Работа refreshControl обрабатывается самостоятельно. Она просто возвращает завершение viewController. Поэтому я вызываю disposeBag для себя.
И сценарий выглядит следующим образом:
Нажмите кнопку -> Pushes to VC (1 раз)
Pull-To-RefreshНажмите кнопку -> Толкает к VC (2 раза)
Pull-To-RefreshНажмите кнопку -> толкает в ВК (3 раза)
Обновлено
Я обнаружил проблему.Именно поэтому я тоже обновил заголовок.Причина в том, что я использовал self.kpiesCollectionView.collectionHeaderButton.rx.tap.subscribe(
в своем блоке завершения запроса, но когда я перешел за его пределы, это сработало хорошо.
Возможно, это было не то место, но я просто хочу узнать.Как я могу избежать этого?Как я могу вызвать подписку () даже внутри блока?