了解RxSwift中的保留周期

问题描述 投票:1回答:1

如果我有以下代码

func handle(showEmptyView: Driver<Bool>) {
    showEmptyView
        .drive(onNext: setEmptyViewShown)
        .disposed(by: disposeBag)
}

func setEmptyViewShown(_ show: Bool) {
    tableView.isHidden = !show
    emptyView.isHidden = show
}

当我调用 setEmptyViewShown 因为我不用 weakunowned 自我?

ios swift memory-management rx-swift
1个回答
1
投票

是的,有一个保留周期,因为 setEmptyViewShown(_:) 是一种方法,它以 self 作为隐含的第一个参数。

更好的做法是:

disposeBag.insert(
    showEmptyView.bind(to: emptyView.rx.isHidden),
    showEmptyView.map { !$0 }.bind(to: tableView.rx.isHidden)
)
© www.soinside.com 2019 - 2024. All rights reserved.