RxSwift:单个可观察到的自我为零

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

我正在尝试实现RxSwift单个可观察的:

class Doctor {
    var disposeBag = DisposeBag()

    func sanityCheck() -> Single<String> {
        return Single<String>.create {[weak self] observer in
            if self?.amICrazy() == true {
                observer(.success("Yes, you are crazy"))
            }else {
                observer(.error(someError.notCrazy))
            }
            return Disposables.create()
        }
    }

    func amICrazy() -> Bool {
        return arc4random_uniform(2) == 0
    }
}

但是问题是self始终为零。

你们都知道为什么self为零或如何解决?

非常感谢您的帮助。

ios rx-swift xcode11.2 swift5.2
1个回答
0
投票

您在weak的创建闭包中对self使用Single捕获,因此,除非您对Doctor对象持有强引用,否则一旦离开分配上下文,它就会被释放。

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