Swift - 垃圾收集 - 留下了一些东西

时间:2016-07-18 15:14:44

标签: ios swift garbage-collection

我是iOS开发的新手,所以如果我的问题听起来不值得在stackoverfow上,我会提前道歉。

就结构而言,我正在构建一个带有HomeController和游戏玩法ViewController的简单游戏。

我添加了一个非常简单的函数来杀死活动,以确保不会遗漏任何东西,这会在它离开游戏玩法ViewController之前被调用。以下是我正在使用的代码:

private func cleanThis(){  

   //removing objects from array
   activeEnemies.removeAll()

   //removing objects from array
   activeTargets.removeAll()

   //removing the rest
   let subViews = self.view.subviews
   for subview in subViews{
      subview.removeFromSuperview()
   }
}

我必须在这里遗漏一些东西,当我在没有移动到主页的情况下测试它时,会有38MB的恒定内存活动。我还没想到如何监视ViewController中仍然存在的内容。

非常感谢任何帮助。

P.S。当ViewController中没有对象时,内存活动应为0,这是正确的吗?

1 个答案:

答案 0 :(得分:2)

iOS不使用垃圾收集器。它使用了一种叫做automatic reference counting的东西。你遇到麻烦的主要方式是周期性参考(A强烈引用B,它强烈引用A)。

Xcode Instruments将向您显示所有内存分配和解除分配,并且还可以显示内存泄漏。这是一个截图,用于演示:

Instruments - Leak Check