【发布时间】:2019-01-23 14:43:49
【问题描述】:
RemoveFromParentNode() 仅从父节点/场景中删除节点,但不会将其从内存中删除,因为您仍然可以在执行该行后引用该节点。
我想知道我们如何才能从内存中完全删除节点,将节点设置为 null 对变量没有影响,如下面的代码所示。
我见过的大多数解决方案都在 swift 中,但我在 Xamarin.iOS C# 中找不到解决方案
var myNode = new SCNNode
{
Name = "My Node"
};
SView.Scene.RootNode.Add(myNode);
SView.Scene.RootNode.EnumerateChildNodes((SCNNode node, out bool stop) =>
{
node.RemoveFromParentNode();
node = null; // Does nothing
stop = false;
});
try
{
Debug.WriteLine(myNode.Name);
}
catch (NullReferenceException ex)
{
Debug.WriteLine("We already deleted myNode" + ex.Message);
}
预计会遇到问题:“我们已经删除了 myNode”。
实际输出:“我的节点”
【问题讨论】:
标签: c# xamarin memory-management scenekit arkit