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