我在项目中使用RxSwift
,发现直接绑定到选择器时,它会捕获来自self的强引用,而没有调用deinit
。
我想知道如何使选择器/函数仅处理self的weak
引用。
viewModel.title
.drive(onNext: updateTitle)
.disposed(by: disposeBag)
func updateTitle(_ title: String) {
navigationItem.title = title
}
我尝试过的是
func updateTitle(_ title: String) {
weak var weakSelf = self
weakSelf?.navigationItem.title = title
}
但是仍然没有调用deinit
。>>
当然,一种解决方案是完全删除function
viewModel.title .drive(onNext: { [weak self] title in self?.updateTitle(title) ) .disposed(by: disposeBag)
但是我不会丢失简洁的绑定代码。
我在一个项目中使用RxSwift,我发现当我直接绑定到选择器时,它会捕获来自self的强引用,而未调用deinit。我想知道如何使选择器/功能处理...
[看了一眼之后,显然您无法使功能变弱。这不是编程的工作方式。
玩弄它,我发现您可以获得类似的语法: