处理 Observable.subscribe 的结果时不调用 OnNext

OnNext not called when disposing the result of Observable.subscribe

我正在订阅一个 observable,但是如果我将一次性添加到 class 中的 DisposeBag,则永远不会调用 onNext 块。

这是我的代码:

@objc class AppleMusicPlaylistManager: NSObject {

    let disposeBag = DisposeBag()
    let playlists: [MPMediaPlaylist] = []

    func importAppleMusicPlaylist() {
        playlists.forEach { applePlaylist in
            applePlaylist.getItunesStoreTracks().subscribe(onNext: { tracks in
               // Doing things here
            }).addDisposableTo(disposeBag)
        }
    }
}

where getItunesStoreTracks return a RxSwift.Observable<[SoundsMusicITunesStore]> 整个事情就是这样使用的 AppleMusicPlaylistManager().importAppleMusicPlaylist()

一切如期进行。

disposeBag 的当前逻辑指出,在 disposeBag 还活着之前,不会处理可观察对象。

在您的情况下 - AppleMusicPlaylistManager().importAppleMusicPlaylist(),您创建了一个管理器,然后在管理器解除分配时调用异步请求。因此,所有可观察对象也都在释放。

为了使其正常工作,您必须将此管理器设置为 shared 并使用此方法:AppleMusicPlaylistManager.shared.importAppleMusicPlaylist() 或将此管理器保存到某个 属性 以便不立即解除分配。