如何列出所有实时(未释放)的 UIViewControllers?

Posted

技术标签:

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

一些 UIViewController 似乎没有被释放。

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

【问题讨论】:

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

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

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


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

【讨论】:

再次感谢!你不会碰巧知道这个 Interface Builder 问题的答案吧? ***.com/questions/47964843/…【参考方案2】:

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

class Random32ViewController: UIViewController 

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

    deinit 
        print("32 did deinit")
    


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

【讨论】:

以上是关于如何列出所有实时(未释放)的 UIViewControllers?的主要内容,如果未能解决你的问题,请参考以下文章

UITabBarController 未显示其内容的所有大小(UIViewController)

如何解决Linux文件已经删除但是空间未释放的问题

如何解决Linux文件已经删除但是空间未释放的问题

如何解决Linux系统文件已删除但空间未释放

Youtube API - 如何排除未列出的视频?

如何列出所有容器的暴露端口?