确保正在取消分配Login ViewController

时间:2017-11-25 16:31:32

标签: ios swift

应用程序启动时,我有一个登录屏幕,这是LoginViewController的一个实例,并且成功后,即在我的用户成功登录后,我的应用程序的主要内容将使用{{1方法到performSegue(withIdentifier identifier: String, sender: Any?)的实例。不幸的是,我在UITabBarController之后没有调用deinit()。这不会发生,因为我LoginViewController中可能有任何参考周期,因为我明确地检查了那些。

由于只在应用程序启动时需要登录屏幕一次,我想知道是否有最佳做法可以确保我的LoginViewController在segue之后被解除分配?

使用segue可能不是获得此权利的正确方法,因为 根据我的理解,类似问题Deinit not called on Show Detail segue的结论是这样的事实,即使用showDetail-segue与使用模态表示相同,即两个控制器保持彼此的引用和LoginViewController将不会在其中任何一个中调用。这是真正受人尊敬的行为,还是我错过了什么?

更新:我非常关心的原因是,我使用RxSwift而我的deinit()订阅了几个LoginViewController,所以在我的应用程序离开Observables后,我我希望确保将收集的LoginViewController设置为零。在我的DisposeBag的{​​{1}}中执行此操作是否有效?

1 个答案:

答案 0 :(得分:0)

我建议你创建一个自定义segue类并覆盖执行函数,如下所示:

class CustomSegue: UIStoryboardSegue {
    override func perform() {
        source.view.window?.rootViewController = destination
    }
}
相关问题