RxSwift |初始化并推送UIViewController闭包

问题描述 投票:0回答:1

例如,我们有三个UIViewControllers:A,B,C

  1. 我们从A推动B

  2. 在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)
}
  1. 在上面的方法中,我们正在获取一些产品模型,并在关闭时推动C视图控制器。

问题是,当我们从C视图控制器弹出回到B视图控制器时– C视图控制器未初始化。当我们从B视图控制器弹出到A视图控制器时,C视图控制器正在取消初始化。

我做错了什么?

ios swift closures system.reactive deinit
1个回答
0
投票
    您可能正在trackactivity或任何loading中创建保留循环
© www.soinside.com 2019 - 2024. All rights reserved.