无法正确切换SCNView / UIViewControllers以防止内存累积

时间:2017-06-17 13:45:15

标签: ios memory-management uiviewcontroller scenekit

我有一个非常线性的应用程序,它使用导航控制器来浏览一系列视图控制器。所有segue都在故事板中处理并设置为“Push”(这是我可以让导航控制器工作的唯一方法......)

从带有选项的'菜单'VC开始,选择一个,然后它将您带到另一个VC。有时下一个VC是另一个菜单(更详细),但有时VC是显示SCNNode的SCNView。借助导航控制器,通过VC导航工作正常。

每当您将转换为其中一个SCNViews然后退出(转到菜单或之前的VC)时,问题就出现了。特别是,从菜单切换到SCNView,返回菜单,再回到相同 SCNView,反复建立内存直到应用程序崩溃。

当导航出来时,ARC似乎没有释放SCNNodes / SCNViews。 每个 SCNNode / Scene / View我设置为弱ID我在每个/所有VC中尝试了以下代码的各种组合:

override func viewWillDisappear(_ animated: Bool) {

    super.viewWillDisappear(true)


    self.dismiss(animated: true, completion: nil)
}

我把它放在每个VC的末尾,但似乎仍然保留了SCNNodes并且内存会一直堆积直到它崩溃。

退出VC时如何清除SCNNodes?由于我在ViewDidLoad中声明所有内容都是弱的,因此我不能在ViewWillDisappear函数中调用/设置任何内容,因为它不在其中。

0 个答案:

没有答案