gpt4 book ai didi

swift - 使用 rxSwift 绑定(bind)数据时内存泄漏

转载 作者:搜寻专家 更新时间:2023-10-31 23:10:11 29 4
gpt4 key购买 nike

当我尝试绑定(bind)我的 UITextField 时这是在我的 ViewController带变量 var location = Variable<String?>("")这是在我的 ViewControllerViewModel使用 rxSwift我收到有关内存泄漏的信息。我这样做如下:

My ViewController

class ViewController {

@IBOutlet weak var locationTextField: UITextField!
var viewControllerViewModel: ViewControllerViewModel?
lazy var disposeBag = DisposeBag()
/*
Another variables etc.
*/

override func viewDidLoad() {
super.viewDidLoad()

bindDataWithViewModel()
}

func bindDataWithViewModel() {
if let viewModel = viewControllerViewModel {
locationTextField.rx.text.bindTo(viewModel.location).disposed(by: disposeBag) -> // here shows memory leak
}
}
}

My ViewControllerViewModel

class ViewControllerViewModel {

var location = Variable<String?>("")
var infoStruct = InfoStruct()
lazy var disposeBag = DisposeBag()

init() {
initValueObservable()
}

func initValueObservable() {
location.asObservable().subscribe(onNext: { [unowned self] text in
self.infoStruct.location = text
}).addDisposableTo(disposeBag)
}
}

您是否知道为什么会发生这种内存泄漏,我该如何避免这种情况?

最佳答案

func bindDataWithViewModel() {

if let viewModel = viewControllerViewModel {
locationTextField.rx.text.orEmpty
.bindTo(viewModel.location)
.addDisposableTo(disposeBag) // use addDisposableTo
}
}

关于swift - 使用 rxSwift 绑定(bind)数据时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43239830/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com