ViewModelOwners记录了如何使用 ReactiveCocoaCompositeDisposable
这个例子甚至是用 ReactiveCocoa 实现的。
但是,我不明白disposeBag实际是如何处理的,因为CompositeDisposable不会自动处理deinit
我正在尝试该示例并向一次性用品添加一条日志消息:
func didSetViewModel(_: ViewModel, disposeBag: CompositeDisposable) {
disposeBag += AnyDisposable {
print("Disposed Profile")
}
}
释放控制器时永远不会打印该消息。
我认为您需要手动处理袋子deinit,但关联的对象没有暴露,所以我无法disposeBag进入deinit。
我想出的最好的方法是使用lifetimeReactiveCocoa,如下所示:
func didSetViewModel(_: ViewModel, disposeBag: CompositeDisposable) {
disposeBag += AnyDisposable {
print("Disposed Profile")
}
self.reactive.lifetime.observeEnded {
if !disposeBag.isDisposed {
disposeBag.dispose()
}
}
}
但这似乎有问题,例如,如果这是 a ReusableViewModelOwner,那么除了最后一个 disposeBags 之外的所有内容都已被处理,但我仍然保留它们......
所以基本上,我的问题是:你应该如何使用ViewModelOwnerswith ReactiveCocoa.CompositeDisposable?