子类化自定义UIViewController时内存泄漏

时间:2016-11-07 12:22:46

标签: swift xcode memory-leaks

我最近在用仪器进行分析时遇到了内存泄漏。

所以情况是我有一个父AVC,它继承自UIViewController和一个名为BVC的AVC子类。这个BVC有一个辅助类的实例,它在viewDidLoad上初始化。好吧,乐器声称viewDidLoad上存在内存泄漏。

Instruments output

以下是我用来重现问题的示例代码。奇怪的是,如果“a”是AVC的成员并在BVC“A”中初始化,它就不会泄漏。

import UIKit

class A
{
}

class AVC: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()
    }
}

class BVC: AVC
{
    var a: A!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        a = A()
    }
}

所以问题是,当它是BVC而不是AVC的实例时,为什么“a”泄漏?此外,这两种情况下都是内存图的捕获。

Memory graph

由于

1 个答案:

答案 0 :(得分:0)

您应该声明为

var a: A?

从未使用强制取消绑定选项。