例如,我们有三个UIViewControllers:A、B、C。
-
我们从A推动B。
-
在B中,我们调用一些API:
func getProduct(productNumber: String) {
someService.rxGetProduct(productNumber: productNumber)
.asObservable()
.trackActivity(loading)
.subscribe(onNext: { [weak self] product in
guard let `self` = self else { return }
let cViewModel: CViewModel = .init()
let cViewController: CViewController = .init(viewModel: cViewModel)
self.navigationController?.pushViewController(cViewController, animated: true)
}, onError: { [weak self] error in
// error handling
}).disposed(by: disposeBag)
}
- 在上面的方法中,我们得到了一些产品模型,并在闭包中推送C视图控制器
问题是,当我们从C视图控制器跳回到B查看控制器时,C的视图控制器没有取消初始化<当我们从>B视图控制器跳回到A的视图控制器时,strong>C视图控制器正在取消初始化。当我们从>
我做错了什么?
- 您可能正在
trackactivity
或loading
中创建保留循环 - 考虑使用
take(1)
和asSingle()
,以防您的可观察项不打算完成