处理 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()
或将此管理器保存到某个 属性 以便不立即解除分配。
我正在订阅一个 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()
或将此管理器保存到某个 属性 以便不立即解除分配。