【发布时间】:2017-12-27 22:23:21
【问题描述】:
一些 UIViewController 似乎没有被释放。
列出和识别所有活动的(未释放的)UIViewController 的最佳方法是什么?
【问题讨论】:
-
@Rob 太棒了,谢谢!您能否将其作为答案发布,以便您获得信用?并不是说您需要更多... :)
标签: ios swift uiviewcontroller
一些 UIViewController 似乎没有被释放。
列出和识别所有活动的(未释放的)UIViewController 的最佳方法是什么?
【问题讨论】:
标签: ios swift uiviewcontroller
在调试器中运行应用程序并使用“调试内存图”按钮 并在左侧面板中查看视图控制器列表。如果您碰巧遵循在视图控制器名称中包含ViewController 的约定(例如MainViewController、DetailsViewController 等),您可以通过键入ViewController 过滤左侧面板中列出的对象列表在左侧面板底部的“过滤器”文本框中:
在这个例子中,我还点击了我的第三个视图控制器,我可以看到它是由第二个呈现的,它是由第一个呈现的。
另一种方法是使用“视图调试器”,但这仅显示当前存在于活动视图控制器层次结构中的视图控制器,并且可能不会显示其视图当前不可见的视图控制器,因为视图控制器以模态方式呈现另一个视图控制器。
【讨论】:
除了 Rob 的回答,如果您想实时查看它们的初始化和取消初始化,您可以打印到控制台。
class Random32ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("32 did load")
}
deinit {
print("32 did deinit")
}
}
除了视图控制器之外,您可以对所有类类型执行此方法。
【讨论】: