ViewModelOwners описывает, как использовать с ReactiveCocoa CompositeDisposable
Пример даже реализован с ReactiveCocoa.
Однако я этого не делаюпонять, как на самом деле расположен disposeBag
, поскольку CompositeDisposable
не удаляется автоматически на deinit
Я пробую пример и добавляю в одноразовое сообщение журнала:
func didSetViewModel(_: ViewModel, disposeBag: CompositeDisposable) {
disposeBag += AnyDisposable {
print("Disposed Profile")
}
}
Сообщение никогда не печатается, когда контроллер освобождается.
Я думаю, что вам нужно будет утилизировать сумку вручную на deinit
, но связанный объект не выставляется, поэтому я не могу получить disposeBag
in deinit
.
Лучшее, что я придумал, это использование lifetime
от ReactiveCocoa, например:
func didSetViewModel(_: ViewModel, disposeBag: CompositeDisposable) {
disposeBag += AnyDisposable {
print("Disposed Profile")
}
self.reactive.lifetime.observeEnded {
if !disposeBag.isDisposed {
disposeBag.dispose()
}
}
}
Но это кажется проблематичным, например, если этоa ReusableViewModelOwner
, тогда все , но последние утилизированные пакеты уже удалены, но я все еще сохраняю их ...
Итак, в основном, мой вопрос: как вы должны использовать ViewModelOwners
с ReactiveCocoa.CompositeDisposable
?