【问题标题】:How to list all live (non-deallocated) UIViewControllers?如何列出所有实时(未释放)的 UIViewControllers?
【发布时间】:2017-12-27 22:23:21
【问题描述】:

一些 UIViewController 似乎没有被释放。

列出和识别所有活动的(未释放的)UIViewController 的最佳方法是什么?

【问题讨论】:

  • @Rob 太棒了,谢谢!您能否将其作为答案发布,以便您获得信用?并不是说您需要更多... :)

标签: ios swift uiviewcontroller


【解决方案1】:

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

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


另一种方法是使用“视图调试器”,但这仅显示当前存在于活动视图控制器层次结构中的视图控制器,并且可能不会显示其视图当前不可见的视图控制器,因为视图控制器以模态方式呈现另一个视图控制器。

【讨论】:

【解决方案2】:

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

class Random32ViewController: UIViewController {

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

    deinit {
        print("32 did deinit")
    }

}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2019-08-07
    • 2016-08-11
    相关资源
    最近更新 更多