- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我继承了一个到处使用 disposeBags 的项目,但 disposeBag 似乎是一个巨大的内存泄漏。使用包的 View Controller 都没有被释放,这导致订阅堆积。我是
class TestViewController: UIViewController
{
@IBOutlet weak var testLabel: UILabel!
var basePresenter: BasePresenter = BasePresenter()
var disposeBag: DisposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bindPresenter()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
//self.disposeBag = DisposeBag() <------------
}
func bindPresenter() {
//super.bindPresenter()
basePresenter.testVariable.asDriver().drive(onNext: { test in
if !test.id.isEmpty {
self.testLabel.text = "Test text" //<------------
}
}).addDisposableTo(disposeBag)
}
deinit{
print("TestView was dealloc'd")
}
}
//self.disposeBag = DisposeBag()
最佳答案
你的理论是正确的。您需要在订阅方法中使用对 self 的弱引用或无主引用,而不是强引用。并去掉 viewWillDissapear 中 disposeBag 的赋值。当对象被删除时, disposeBag 将正确处理您的订阅者。
您像这样设置对 self 的弱引用:
basePresenter.testVariable.asDriver().drive(onNext: { [weak self] test in
if !test.id.isEmpty {
self?.testLabel.text = "Test text" // no longer a strong reference
}
}).disposed(by: disposeBag)
关于ios - DisposeBag 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296776/
我继承了一个到处使用 disposeBags 的项目,但 disposeBag 似乎是一个巨大的内存泄漏。使用包的 View Controller 都没有被释放,这导致订阅堆积。我是 class Te
是否有任何内置方法可以将两个或多个 DisposeBag 合并为一个,在第一次触发时立即触发? 用例是这样的:我有一个 UIViewController 带有一些控件和他自己的 disposeBag;
我在公司项目中大量使用 RxSwift。当在 Instrument 中运行性能测试时,真正令人担忧的问题出现了。 每次调用 .addDisposableTo(disposeBag) 时,Instrum
我想取消一个请求,其中一种方法是手动移除一次性袋子。 .addDisposableTo(disposeBag) 因为我有disposeBag对象,除了我上面提到的之外,还有什么好的方法可以取消请求吗?
我是 RxSwift 框架的新手。我在我的 ViewController 中使用一次性用品,并在 DisposeBag 中添加一次性用品。 我应该在哪里释放 DisposeBag 以处理所有一次性用品
我们创建一个DisposeBag和一个Observable,订阅Observable然后addDisposableTo(disposeBag),我知道当 DisposeBag 将要 deinit 时,
我注意到在从入门部分 (https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md#debuggi
现在我需要根据配置 API 更改应用主题(颜色),所以我使用 RxCocoa、RxSwift 框架在每个 View Controller 上创建可观察对象以在应用上应用新主题。 我的问题是使用 Dis
首先对于令人困惑的标题感到抱歉,但实际上我想不出更好的东西(如果你想,请编辑)。 我有一个使用协调器模式和 RxSwift 的应用程序,所以总而言之,我想将所有导航相关的东西传递给协调器,这样它就可以
我尝试使用 RxSwift + MVVM 架构开发 iOS 应用程序。 我有个问题。谁应该拥有 DisposeBag 实例? 现在,我在我的代码中实现如下。 View 模型有一个“变量”的实例。 Co
我是 RxSwift 的新手,在这里我想问一个关于 DisposeBag 应该在哪里的问题。 我的情况是,我已经检索到在 tableview 中显示的项目列表,并且每个项目都有自己的标志来指示它是否被
我最近发现一篇文章说使用 [unowned self] 总是安全的,只要您将订阅添加到 DisposeBag 并且它在 View Controller 内. 假设我有一个 ViewController
我是一名优秀的程序员,十分优秀!