对象层次结构在Swift中导致内存泄漏

我已经能够提炼出一个我写的应用程序中出现的问题,并以一个简单的例子进行了转载。

鉴于这些类:

class Thing { var name:String = "" var price:Double = 0.0 var changed:Double = 0.0 var percentChanged:Double = 0.0 } class TestUIViewController: UIViewController { } class ViewController: TestUIViewController { var thing:Thing? @IBAction func clicked(_ sender: AnyObject) { self.thing = Thing() } } 

我用一个button创build了一个UIView,当按下时,一个事物被实例化。 随着仪器分析器,我可以看到发生内存泄漏。

但是,如果ViewController类从UIViewController扩展,则没有问题。

这些都是从一个快速testing应用程序中复制出来的,所以在这里我没有其他的外力可以想到。

这里是示例代码 – https://www.dropbox.com/s/ooqh77lhpzbvpv1/ArcTest.zip?dl=0

您可能在检漏仪中发现了一个错误,这可能是一个非常有趣的错误,所以您应该向Apple报告。 但实际上没有泄漏。 我下载并运行您的项目下的项目,并单击button10次。 这是我在乐器configuration模板中看到的:

在这里输入图像说明

这是预期的结果。 有9个短暂的事情,只有一个持续的事情 – 目前分配给财产。 如果存在多于一个的持续事物,则会发生泄漏,而事实并非如此。

另外,这就是Xcode中的内存量规:

在这里输入图像说明

当我重复按下button时,我们会有一点点的崛起(一种“mesa”),但是我们再次回到底层。