返回变量的所有者 - Swift

时间:2017-08-04 00:27:42

标签: ios swift swift3

所以我有对象反过来又有与之相关的精灵。我的Object类的片段:

import SpriteKit

 class Block {

 var sprite : ColourSprite

}

正如您所看到的,它有一个实际上是SKSprite的变量(ColourSprite是我的自定义类,继承自SKSpriteNode)。

现在,在游戏中的某些时刻,这些精灵被删除了(即sprite.removeFromParent()),但是对象显然仍然在某处。

我希望能够在精灵消失后将对象发送到垃圾回收。我在想我可以做像sprite.getOwner()这样的东西,但我似乎无法找到它。这可能吗?

我能想到的另一个选择是手动检查所有对象并检查每个对象,但我觉得这很长很浪费。

1 个答案:

答案 0 :(得分:1)

您可以使用Xcode 8.3的新调试面板检查Block是否仍在内存中。

enter image description here

enter image description here

删除精灵后暂停程序并转到该面板。查看左侧面板中是否有任何Block个实例。如果有,请单击它以检查保留它的内容。

例如,如果您的GameScene保留Block,则转到GameScene并找到该媒体资源。然后,您可以在删除精灵后将其设置为nil