即使传递了一个值,为什么中继的订阅也不起作用?

问题描述

我已经像这样设置了relay

class CustomAlertViewController: UIViewController {
    private let disposeBag = disposeBag()
    var alertTextRelay = BehaviorRelay<String>(value: "")

    alertTextField.rx.value.orEmpty.changed.subscribe(onNext: { [weak self] value in
         print("THIS IS RIGHT",value)
          self?.alertTextRelay.accept(value)
          print("THIS IS ALSO RIGHT",self?.alertTextRelay.value)  
        }).disposed(by: disposeBag)
...

我得到了写在textField中的文本,并将其接受到relay中并进行检查以确保该值确实存在。但是订阅永远不会触发:

class RecievingClass: UIViewController {
    let disposeBag = disposeBag()
    let instance = CustomAlertViewController()

    instance.alertTextRelay.subscribe(onNext: { value in
        self.myText = value
            
     },onError: { error in
         print(error)
     },onCompleted: {
         print("completed")
     }).disposed(by: disposeBag)

...

subscription中的任何内容均不会触发。为什么?如果有帮助,则将CustomAlertViewController用作自定义alert(覆盖图上的view)。另外,static中有很多CustomAlertViewController函数。不确定是否相关。让我知道我是否还能提供其他任何东西。

解决方法

尝试更改此alertTextField.rx.text.orEmpty.asObservable()上的alertTextField.rx.value.orEmpty.changed.subscribe。并以其他方式为RecievingClass添加[弱自我],这样会导致内存泄漏。