Вступить в клуб →
сложнаявопросCombine: издатели, подписки и операторы

Заменили 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

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела