trying to resolve leak

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-08-15 09:09:24 -05:00
parent 1d30735948
commit 166ecf461d
2 changed files with 23 additions and 17 deletions

View File

@ -45,10 +45,12 @@ extension Publishers {
private func subscribe() { private func subscribe() {
guard let publisher = modelHandler?.modelPublisher else { return } guard let publisher = modelHandler?.modelPublisher else { return }
publisher.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main).sink { [weak self] viewModel in publisher
guard let self else { return } .debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main)
_ = self.subscriber?.receive(viewModel) .sink { [weak self] viewModel in
}.store(in: &subscribers) _ = self?.subscriber?.receive(viewModel)
}
.store(in: &subscribers)
} }
} }
} }
@ -59,8 +61,10 @@ extension ModelHandlerable {
} }
public func createBinding(with subject: CurrentValueSubject<ModelType, Never>, storeIn subscriptions: inout Set<AnyCancellable>) { public func createBinding(with subject: CurrentValueSubject<ModelType, Never>, storeIn subscriptions: inout Set<AnyCancellable>) {
handlerPublisher().sink { (value) in handlerPublisher()
subject.send(value) .sink { (value) in
}.store(in: &subscriptions) subject.send(value)
}
.store(in: &subscriptions)
} }
} }

View File

@ -30,15 +30,17 @@ extension ModelHandlerable {
} }
} }
public func setupUpdateView() { public func setupUpdateView() {
modelPublisher.filter { [weak self] viewModel in modelPublisher
guard let self else { return false} .filter { [weak self] viewModel in
return self.shouldUpdateView(viewModel: viewModel) return self?.shouldUpdateView(viewModel: viewModel) ?? false
}.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main).sink { [weak self] viewModel in }
guard let self else { return } .debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main)
self.updateView(viewModel: viewModel) .sink { [weak self] viewModel in
self?.updateView(viewModel: viewModel)
}.store(in: &subscribers)
}
.store(in: &subscribers)
} }
} }