Swift init()是否可以返回以前创建的对象?

时间:2018-07-20 09:19:03

标签: swift initialization rx-swift

我使用RxSwift。该函数返回Observable

func getDeviceInfo(_ deviceId: Int) -> Observable<DeviceInfo> {
    return Observable.create { o in
        self.getInfo(deviceId, onSuccess: { data in
            o.onNext(data)
            o.onCompleted()
        }, onFail: { error in
            o.onError(error)
        })
        return Disposables.create()
    }
}

然后我订阅

repository.getDeviceInfo(deviceId)
            .subscribe(onNext: { (info) in 
                print("onNext")
            }, onError: { (error) in
                print("onError")
            }, onCompleted: {
                print("onCompleted")
            }, onDisposed: {
                print("onDisposed")
            })

我第一次得到真实的结果。但是,当我第二次,第三次调用subscribe()时,没有调用任何订阅的回调(onNext,onError,onCompleted,onDisposed)。 调试后,我发现getDeviceInfo()中的o.onNext(data)和o.onCompleted()被调用,但是订阅的回调不接收任何数据。 我在RxSwift中的Create.swift文件中调试了下一行

let sink = AnonymousObservableSink(observer: observer, cancel: cancel)

AnonymousObservableSink类一些代码,不是Singelton:

final fileprivate class AnonymousObservableSink<O: ObserverType> : Sink<O>, ObserverType {

override init(observer: O, cancel: Cancelable) {
    super.init(observer: observer, cancel: cancel)
}

,但每次引用let sink都相同。那么,init()函数有时能否返回早期创建的对象?

0 个答案:

没有答案