我用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()第二次,第三次等等时,没有调用subscribe的回调(onNext,onError,onCompleted,onDisposed) . 调试后我发现调用了getDeviceInfo()中的o.onNext(data),o.onCompleted(),但是subscribe的回调没有收到任何数据 . 我在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()func有时会返回早期创建的对象吗?