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

Ios 无法正确切换SCNView/UIViewController以防止内存累积,ios,memory-management,uiviewcontroller,scenekit,Ios,Memory Management,Uiviewcontroller,Scenekit,我有一个非常线性的应用程序,它使用导航控制器浏览一系列视图控制器。所有的片段都在故事板中处理并设置为推送,这是我让导航控制器工作的唯一方法 从一个带有选项的“菜单”VC开始,选择一个,它会将您带到另一个VC。有时下一个VC是另一个更详细的菜单,但有时VC是一个显示SCNNode的SCNView。多亏了导航控制器,在VCs中导航工作得非常好 当您转到其中一个SCN视图,然后返回到菜单或上一个VC时,问题就会出现。特别是,从菜单切换到SCNView,再切换到菜单,再切换到相同的SCNView,一次又

我有一个非常线性的应用程序,它使用导航控制器浏览一系列视图控制器。所有的片段都在故事板中处理并设置为推送,这是我让导航控制器工作的唯一方法

从一个带有选项的“菜单”VC开始,选择一个,它会将您带到另一个VC。有时下一个VC是另一个更详细的菜单,但有时VC是一个显示SCNNode的SCNView。多亏了导航控制器,在VCs中导航工作得非常好

当您转到其中一个SCN视图,然后返回到菜单或上一个VC时,问题就会出现。特别是,从菜单切换到SCNView,再切换到菜单,再切换到相同的SCNView,一次又一次地积累内存,直到应用程序崩溃

ARC在导航出SCNNodes/SCNViews时似乎没有释放SCNNodes/SCNViews。我设置的每个SCN节点/场景/视图都很弱,我在每个/所有VCs中尝试了以下代码的各种组合:

override func viewWillDisappear(_ animated: Bool) {

    super.viewWillDisappear(true)


    self.dismiss(animated: true, completion: nil)
}
我把它放在每个VC的末尾,但看起来SCNNodes仍然会被保留,并且内存会不断累积,直到崩溃


退出VC时如何清除SCNNodes?由于我在ViewDidLoad中声明所有内容都是弱的,因此我无法调用/设置ViewWillEnglishe func中的任何内容,因为它在该函数之外。

您是否有其他对这些视图的引用导致保留周期?我看不到,也不知道!这是一个非常线性的应用程序,我为n设置了每个ViewController,每个都有前进到SCN视图或返回菜单的按钮。除非风投以某种方式被全球保留,否则我不明白他们为什么不释放内存。