我正在运行检测内存泄漏的工具,并且在将此observable与UIButton Headers 绑定时,我发现内存泄漏 . 知道我做错了什么或如何解决这个问题?
override func viewDidLoad() {
...
viewModel?.menuData.asObservable().subscribe(onNext: setupTopMenu).addDisposableTo(disposeBag)
...
}
func setupTopMenu(items: [MenuItemViewModel]) {
topMenuStackView.subviews.forEach({ $0.removeFromSuperview() })
for (i, item) in items.enumerated() {
let button = UIButton(type: .custom)
item.titleUppercased.bindTo(button.rx.title(for: .normal)).addDisposableTo(disposeBag) // memory leak
topMenuStackView.addArrangedSubview(button)
}
}
1 回答
你会想要编写你的订阅代码
这是因为在使用函数传递语法时,会隐式保留
self
. 遗憾的是,没有办法解决这个问题 .