在segue之后没有调用ViewController的deinit

时间:2017-02-03 09:59:30

标签: swift memory uiviewcontroller root deinit

我有两个测试控制器:TestController1TestController2。我试图通过将UIApplication.shared.window[0].rootViewController更改为自我(TestController2)来加载或显示第二个控制器时第一个控制器。但是没有任何事情发生,我在内存中也有两个控制器。所以,我的问题是:我如何deinit所有ViewControllers并且只在内存中保留一个?

我的所有测试控制器都有deinit方法,并且我正在尝试在执行时打印“deinited”,所以我在这里提出的许多问题中没有任何断点问题。

这是我的TestController2代码:

class TestController2: UIViewController {

    deinit {
        print("testController 2 deinited")
    }


    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        //first attempt
        let del = UIApplication.shared.delegate as! AppDelegate
        del.window?.rootViewController = self

        //second attempt
        UIApplication.shared.windows[0].rootViewController = self

        //third attempt
        UIApplication.shared.keyWindow?.rootViewController = self
    }
}

我的所有尝试都无效..

更新:第一个和第二个控制器只有一个按钮。没有任何业务逻辑。我在故事板上通过ctrl +拖动模式从控制器1的按钮到控制器2创建了一个segue。

0 个答案:

没有答案