创建我有一个用下面创建现场套件纹理的应用程序内存:如何释放由SKTexture
let texture = SKTexture(image: image)
的问题是,经过几个电话,该应用程序崩溃是由于内存不足。
我真的只需要最近创建的纹理,所以当创建一个新的纹理时,预览的内存可以被释放,但是,Scene Kit似乎仍然保留这些纹理,即使它们不再被使用时(节点不再是场景的一部分)。
如何手动指示Scene Kit释放纹理的内存和缓存,以免陷入低内存崩溃的情况?
此外,我知道SceneKit文档建议通过删除节点等来删除对纹理的所有引用,但是应该发生,但纹理未被释放。是否有一种很好的调试方法,并查看引用的内容?
在重新审查代码时,我创建了一个场景来保存要在主场景中渲染的图像(其节点不会更改)。基本上,场景中有一个对象可以显示图像或视频,并通过返回用作材质漫反射内容的场景而被改变。
let texture = SKTexture(image: image)
let sprite = SKSpriteNode(texture: texture)
let scene = SKScene(size: sprite.size)
sprite.position = CGPointMake(CGRectGetMidX(scene.frame), CGRectGetMidY(scene.frame));
scene.addChild(sprite)
然后在这里被使用:
primaryObjectMaterial.diffuse.contents = scene
我希望一次场景的节点材料内容被改变,这一幕(和纹理和图像)将被释放,因为不再是任何对它的引用,但也许缓存系统挂在某些东西上,或者我做错了什么?
http://stackoverflow.com/questions/21025295/how-do-i-get-rid-of-sktextures –
我看到你放在哪里,节点不再是场景的一部分,但你实际上是删除节点? –
@ Oleksii:该链接建议不使用imageNamed,这是我正在做的。 – Gujamin