【发布时间】:2017-08-31 13:52:21
【问题描述】:
当我尝试使用rxSwift 将我的ViewController 中的UITextField 与我的ViewControllerViewModel 中的变量var location = Variable<String?>("") 绑定时,我收到有关内存泄漏的信息。我这样做如下:
我的视图控制器
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
}
}
}
我的 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)
}
}
您知道为什么会出现这种内存泄漏以及如何避免它吗?
【问题讨论】:
-
我有同样的问题是当我使用 textField.rx.text 资源计数总是增加。有关更多详细信息,我的测试用例是我有 2 个屏幕是 A 和 B。在 A 处,资源计数为 56。当我推送到 B(B 有一个 TextField 并且我使用 textField.rx.text )并返回到 A 时,资源计数为 60。每次我推回时它会增加 4。有人可以解释一下吗?
标签: swift xcode memory-leaks instruments rx-swift