【问题标题】:memory usage increases when switching view controller in swift快速切换视图控制器时内存使用量增加
【发布时间】:2018-12-17 21:24:04
【问题描述】:

我目前正在创建一个需要用户切换视图控制器的游戏 - 在关卡之间切换时。

从我以模态方式使用的菜单页面访问关卡。 返回菜单页面时,我使用以下代码:

@IBOutlet weak var Menu: UIButton!
@IBAction func returntoMenu(_ sender: UIButton) {
    self.dismiss(animated: true, completion: nil)
}

这意味着当用户按下菜单按钮时,他们将返回菜单页面。 但是我注意到每次按下菜单按钮时,内存使用量都会上升而不是下降。这表明关卡没有正确关闭。

有谁知道是什么导致了这个问题,

提前谢谢你!

【问题讨论】:

  • 在所提供的 vc 中的 deinit 中插入一个打印,以查看您关闭时是否调用
  • @Sh_Khan 试过了,发现被调用了
  • 配置文件 (Cmd-I) 您的应用并使用“泄漏”工具确定内存的使用位置。

标签: swift memory viewcontroller


【解决方案1】:

默认情况下,iOS 使用自动引用计数。这意味着每个对象至少有一个与先前创建的(强引用)对象的强引用。 如果引用被删除,垃圾收集器会清除这部分内存。当然,我的意思是堆。 如果两个项目彼此有自己的强引用,则此状态表示“保留周期”。所以,记忆永远不会释放。您必须发布更多代码才能找到问题。我只是描述了一个简单的案例。当应用程序消耗大量堆内存时,会有很多状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2012-04-26
    相关资源
    最近更新 更多