我订阅了一个observable,但如果我将一次性添加到我班级的btnClick event
,则永远不会调用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)
}
}
}
返回getItunesStoreTracks
,整个内容使用RxSwift.Observable<[SoundsMusicITunesStore]>
答案 0 :(得分:1)
这一切都按预期工作。
disposeBag
的当前逻辑指出,在disposeBag
存活之前,观察者不会被处置掉。
在您的情况下 - AppleMusicPlaylistManager().importAppleMusicPlaylist()
,您创建了一个管理器,然后在管理器解除分配时调用异步请求。因此,所有可观测量都在解除分配。
为了使其正常工作,您必须将此管理器设置为shared
并使用此方法:AppleMusicPlaylistManager.shared.importAppleMusicPlaylist()
或将此管理器保存到某个属性,以便不立即解除分配。