快速创建弱选择器/函数

问题描述 投票:0回答:2

我在项目中使用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。我想知道如何使选择器/功能处理...

swift binding selector rx-swift
2个回答
0
投票

[看了一眼之后,显然您无法使功能变弱。这不是编程的工作方式。


0
投票

玩弄它,我发现您可以获得类似的语法:

© www.soinside.com 2019 - 2024. All rights reserved.