【问题标题】:RxSwfit bind operation retain cycleRxSwift 绑定操作保留周期
【发布时间】:2019-03-12 13:35:59
【问题描述】:

我是 rxswift 框架的新手。我在下面写了一段代码,但我不确定。是否有任何保留周期?我必须对 self 使用弱引用吗?

    loginButton.rx.tap.bind {
        print(self.nameText.value ??  "")
       self.nameText.accept("ahmet vefa saruhan")
    }.disposed(by: disposebag)

第二种情况是:

func myTestFunction(handler : () -> Void) {
    handler()
}

myTestFunction {
        self.isVisible = false
    }

这里有保留周期问题吗?

【问题讨论】:

    标签: ios memory-management rx-swift swift4.2 retain-cycle


    【解决方案1】:

    是的,当你在块中使用 self 时应该使用weak。 并使用订阅而不是绑定。

    basicLoginButton.rx.tap.subscribe(onNext: { [weak self] () in
        print(self?.nameText.value ?? "")
        self?.nameText.accept("ahmet vefa saruhan")
    }).disposed(by: disposeBag)
    

    我认为在第二种情况下,一切都是正确的,不需要“弱”。

    【讨论】:

    • 感谢您的回答。我已经在第二个例子中编辑了第 2 部分的问题:),应该使用弱吗?
    • 为什么我必须订阅它?这是相同的功能
    • 谢谢。我得到了它。如果闭包存储在变量中,则存在一个保留循环。
    猜你喜欢
    • 2020-09-23
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多