我正在订阅一个 observable,但是如果我将一次性添加到 DisposeBag
在我的课上,onNext
block 永远不会被调用。
这是我的代码:
@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)
}
}
}
哪里getItunesStoreTracks
返回 RxSwift.Observable<[SoundsMusicITunesStore]>
整个东西都是这样使用的AppleMusicPlaylistManager().importAppleMusicPlaylist()
最佳答案
一切都按预期工作。
disposeBag
的当前逻辑指出,在 disposeBag
处于事件状态之前,不会处理可观察对象。
在您的情况下 - AppleMusicPlaylistManager().importAppleMusicPlaylist()
,您创建了一个管理器,然后调用异步请求,同时管理器正在取消分配。因此,所有可观察量也都在释放。
为了使其正常工作,您必须将此管理器设置为 shared
并使用此方法:AppleMusicPlaylistManager.shared.importAppleMusicPlaylist()
或保存此管理器一些属性(property),以免立即解除分配。
关于swift - 处理 Observable.subscribe 的结果时不调用 OnNext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179068/