Xcode内存图调试器没有显示周期

时间:2018-02-26 12:44:04

标签: xcode memory-graph-debugger

我一直在使用Xcode内存图调试器在我们的项目中查找循环引用,并且我发现了其中的一些。

但是,我还没能看到图表中的周期。只有通过检查代码。

例如,我会看到......

  

ViewControllerA --- [parentViewController] ---> ViewControllerB

但在代码中,它们的创建方式就像......

dump()

和...

class ViewControllerA: UIViewController {
    let parentViewController: UIViewController
}

显然这是一个循环参考。但它只在图表中显示一个箭头。

有没有办法在图表中显示这两个箭头?

刚刚创建了一个例子......

新建项目 - 单一视图 - 将ViewController.swift编辑为...

class ViewControllerB: UIViewController {
    let otherViewController: UIViewController!

    viewDidLoad() {
        ...
        otherViewController = ViewControllerA(parentViewController: self)
    }
}

在Memory Graph Debugger中......

专注于ViewController ......

enter image description here

专注于ViewControllerB ......

enter image description here

从这些我可以推断出有一个参考周期。但是网上有一些教程,它实际上显示了围绕对象循环的箭头循环...

来自Use your loaf

enter image description here

1 个答案:

答案 0 :(得分:1)

参考周期仅出现在内存图调试器中,用于泄漏对象。因为UIWindow引用了ViewController,所以它不会被视为泄露,因此不会显示视图控制器之间的循环。