如何列出所有实时(未释放)的 UIViewControllers?
Posted
技术标签:
【中文标题】如何列出所有实时(未释放)的 UIViewControllers?【英文标题】:How to list all live (non-deallocated) UIViewControllers? 【发布时间】:2017-12-27 22:23:21 【问题描述】:一些 UIViewController 似乎没有被释放。
列出和识别所有活动的(未释放的)UIViewController 的最佳方法是什么?
【问题讨论】:
@Rob 太棒了,谢谢!您能否将其作为答案发布,以便您获得信用?并不是说您需要更多... :) 【参考方案1】:在调试器中运行应用程序并使用“调试内存图”按钮 并在左侧面板中查看视图控制器列表。如果您碰巧遵循在视图控制器名称中包含ViewController
的约定(例如MainViewController
、DetailsViewController
等),您可以通过键入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?的主要内容,如果未能解决你的问题,请参考以下文章