xcode 内存图未显示保留周期

xcode memory graph not show retain cycle

我的 swift 代码如下。我在闭包中使用了 self,但是当我 运行 项目时,内存图不显示保留周期。我错了有一个保留周期?

class ViewController: UIViewController {

    private var counter = 0

    private var closure : (() -> ()) = { }

    func foo() {
        closure()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        closure = {
            self.counter += 1
            print(self.counter)
        }
    }

}

是的,Xcode并不总是直观地代表强引用循环。但它一致表明所讨论的对象尚未被释放。

例如,如果我通过导航控制器推送并弹出,我会在活动对象列表中看到 ViewController,但是当我 select 它时,看不到任何循环,而是看到一些神秘的图表,包括导航控制器(即使我把它弹出):

话虽如此,我发现如果我以模态方式呈现并关闭有问题的视图控制器,我会更清楚地看到循环:

如果我们能看到原型循环(如下所示)就好了,但是在处理 UIKit 对象时,情况并不总是那么简单。