我一直在使用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 ......
专注于ViewControllerB ......
从这些我可以推断出有一个参考周期。但是网上有一些教程,它实际上显示了围绕对象循环的箭头循环...
答案 0 :(得分:1)
参考周期仅出现在内存图调试器中,用于泄漏对象。因为UIWindow引用了ViewController,所以它不会被视为泄露,因此不会显示视图控制器之间的循环。