问题描述
我已经像这样设置了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添加[弱自我],这样会导致内存泄漏。