【问题标题】:RxSwift | Initialize and push UIViewController in closure迅捷 |在闭包中初始化并推送 UIViewController
【发布时间】:2020-07-09 01:11:10
【问题描述】:

例如我们有三个 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】:
    1. 您可能正在trackactivityloading 中创建保留周期
    2. 考虑使用 take(1)asSingle(),以防您的 observable 不打算完成。

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2019-12-31
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多