ios - 迅捷 | 在闭包中初始化并推送 UIViewController
问题描述
例如,我们有三个 UIViewController: 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视图控制器时, C视图控制器正在取消初始化。
我做错了什么?
解决方案
- 您可能正在创建保留周期
trackactivity
或任何loading
内容 - 考虑使用
take(1)
andasSingle()
以防您的 observable 不打算完成。
推荐阅读
- javascript - 仅在 LINUX 上出现 NodeJS rmdir 函数错误?
- python - Python Socket - ValueError:解包的值太多(预期为 2)
- r - Testing To See if Characters are Present in a Cell in R
- java - How many java semaphores instances can be created?
- c# - jQuery can't parse value from a item which has ID with special char '*'
- json - Is there a way to embed the Firefox JSONView (or similar) inside DRF's BrowseableAPI json nested-renderer?
- php - Laravel - Lcurd class not found
- python - Creating an integer prompt using numbers between 32-126 on Python
- python - 如何在 sympy 中增加矩阵的维数
- javascript - How to append data to a JSON array