Memory leak. Could anybody explaining why?????? I'm new to Combine so any help is highly appreciated
Thank you in advance.
VM:
class ArchivedAppealsViewModelImp: ArchivedAppealsViewModel {
var appeals = PassthroughSubject<[CurrentAppealsCellModel], Never>()
private(set) var petitionRouter: PetitionRouter
init(petitionRouter: PetitionRouter) {
self.petitionRouter = petitionRouter
}
func loadCellModels() {
// do some networking here
let fakeCellModels = (0...10).map { _ in CurrentAppealsCellModel(
hasBeenRead: Bool.random(),
description: "Some fake description",
status: "Waiting for manager call",
time: " 18:25",
serialNum: "Num β 25-6541 ΠΎΡ 22.03.2020")
}
appeals.send(fakeCellModels)
}
func executeActionForCell(at index: Int) {
petitionRouter.routeToPetition()
print("ππ» Cell at index: \(index) was tapped")
}
}
Controller:
class ArchivedAppealsController: CustomPageViewController {
private var viewModel: ArchivedAppealsViewModel
private let contentView = ArchivedAppealsControllerView()
private var disposedBag = Set<AnyCancellable>()
override func loadView() {
view = contentView
}
override func viewDidLoad() {
bindVMToContentView()
viewModel.loadCellModels()
contentView.onCellAtIndexTapAction = { [unowned self] index in
self.viewModel.executeActionForCell(at: index)
}
}
init(viewModel: ArchivedAppealsViewModelImp,
tapName: String) {
self.viewModel = viewModel
super.init(id: tapName)
}
private func bindVMToContentView() {
viewModel.appeals
.receive(on: RunLoop.main)
.sink { [unowned self] in self.contentView.appeals = $0 }
.store(in: &disposedBag)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}