【问题标题】:Memory Leak when subclassing custom UIViewController子类化自定义 UIViewController 时的内存泄漏
【发布时间】:2016-11-07 12:22:46
【问题描述】:

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

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

这是我用来重现问题的示例代码。奇怪的是,如果 "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()
    }
}

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

谢谢

【问题讨论】:

    标签: swift xcode memory-leaks


    【解决方案1】:

    你应该将 a 声明为

    var a: A?
    

    从未使用强制解除绑定选项。

    【讨论】:

    • 这根本不是重点,也没有回答问题。此外,在我的实际应用程序中,“a”永远不应该为 nil,我不能直接在声明它的同一行中对其进行初始化,因此优雅的解决方案是强制展开,它是强制展开的实际用途之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2017-08-24
    • 2010-10-11
    • 2012-04-21
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多