MVP - уничтожить объект Presenter из View Controller при отклонении в iOS - PullRequest
0 голосов
/ 09 мая 2018

Я следую Пример Здесь , чтобы применить шаблон MVP в Swift.Когда я отклоняю свой View Controller, докладчик не уничтожается, и View Controller также остается в памяти.

Когда я пытаюсь сделать объект презентатора «слабым», код ломается в этой строке.

presenter.login(email: "email", password: "password")

Как правильно объявить и уничтожить экземпляр презентатора.Спасибо

1 Ответ

0 голосов
/ 09 мая 2018

В своем коде в Presenter вы создаете запрос к сети и захватываете себя при закрытии без использования слабой или неподтвержденной ссылки. Из-за этого существует цикл сохранения. Вы можете прочитать больше о сохранении циклов здесь .

Обновленный код:

func login(email: String, password: String)
{
    self.view.showProgress()

    FoodAPI.api.login(email: email, password: password) { [weak self] (msg, user) in
        guard let `self` = self else {
            return
        }
        DispatchQueue.main.async {
            self.view.hideProgress()
            if let user = user
            {
                AppDelegate.shared.user = user
                UserDefaultsHelper.saveUser(user: user)
                self.view.openMenu() //this line will dismiss the VC and presents next one. 
            }else
            {
                self.view.showAlert(message: msg)
            }
        }
    }
}

Если вы хотите увидеть расширенное использование шаблона MVP , вы можете проверить мой открытый проект здесь и не стесняйтесь спрашивать меня о чем-либо.

...