Заменили sink на assign(to:on: self) — ViewModel всё равно не освобождается
final class BalanceViewModel: ObservableObject {
@Published var balanceText = ""
private var cancellables = Set<AnyCancellable>()
init(wallet: WalletService) {
wallet.$balance
.map { "\($0) ₽" }
.assign(to: \.balanceText, on: self)
.store(in: &cancellables)
}
}
Раньше был sink без [weak self], его заменили на assign, чтобы убрать утечку. Memory Graph по-прежнему показывает живые модели после закрытия экрана. Как исправить?
- Использовать assign(to: &$balanceText)
- Написать on: [weak self] в assign
- Хранить подписку в свойстве, а не в Set
- Вызвать removeAll у cancellables в init
