如何列出所有实时(非解除分配)UIViewControllers?

时间:2017-12-27 22:23:21

标签: ios swift uiviewcontroller

有些UIViewControllers似乎没有被解除分配。

列出和识别所有实时(非解除分配)UIViewControllers的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

在调试器中运行app并使用"调试内存图"按钮debug memory graph并在左侧面板中查看视图控制器列表。如果您碰巧遵循在视图控制器名称中包含ViewController的约定(例如MainViewControllerDetailsViewController等),则可以过滤左侧列出的对象列表通过在"过滤器中输入ViewController"左侧面板底部的文本框:

enter image description here

在这个例子中,我也点击了我的第三个视图控制器,我可以看到它是由第一个显示的第二个视图控制器呈现的。

另一种方法是使用" view debugger" enter image description here,但仅显示当前存在于活动视图控制器层次结构中的视图控制器,并且可能不显示视图当前不可见的视图控制器,因为视图控制器以模态方式呈现了另一个视图控制器。

答案 1 :(得分:1)

除了Rob的回答,如果你想看到它们实时初始化和取消初始化,你可以打印到控制台。

class Random32ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print("32 did load")
    }

    deinit {
        print("32 did deinit")
    }

}

除了视图控制器之外,您可以对所有类类型执行此方法。