MVP - 在 iOS 中解散时从 View Controller 中销毁 Presenter 对象

MVP - Destroy Presenter object from View Controller on dismiss in iOS

我正在关注 Example Here 在 swift 中应用 MVP 模式。 当我关闭我的 View Controller 时,presenter 不会被销毁,View Controller 也会保留在内存中。

当我尝试创建演示者对象时 'weak',代码在这一行中断。

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

如何正确声明和销毁演示者实例。谢谢

Presenter 中的代码中,您创建了网络请求并在关闭时捕获了自我,而没有使用弱引用或无主引用。因此,存在一个保留周期。您可以阅读有关保留周期的更多信息 here.

更新代码:

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 模式的高级用法,您可以查看我打开的项目 here 并随时问我任何问题。