应用程序崩溃:内存问题?

问题描述:

我正在试验一下Sprite Kit,我注意到当我让我的应用程序运行一段时间后崩溃。应用程序崩溃:内存问题?

我想要做的,是画遵循我的球员运动的线,我这样做,像这样:

var ref: CGMutablePathRef = CGPathCreateMutable() 
var shapeLine: SKShapeNode! 

override func update(){ 

shapeLine.removeFromParent() 

CGPathAddLineToPoint(ref, nil, player.position.x, player.position.y) 

shapeLine = SKShapeNode(path: ref) 
shapeLine.lineWidth = 3 
shapeLine.path = ref 

addChild(shapeLine) 
} 

这工作得很好,我删除节点每次,更新路径,并用新路径创建另一个节点。

重点是几秒钟后(约25)它崩溃。 节点是不变的,因为我每次都添加和删除节点。帧速率在碰撞前开始减小,并从30fps变为20fps。

我觉得奇怪的是内存的使用,它增加了很多,甚至在崩溃前使用大约800MB。

有没有我遗忘的东西,还是只是道路增加太多而无法处理?

+0

为什么不尝试做一个实验来改变已经存在的'shapeLine'的路径,以查看问题的一部分是否来自不断创建新的'SKShapeNode'。换句话说,创建'shapeLine'一次,然后在其他时间,只需更新路径。 –

+0

已经尝试过,结果相同:/ – DevX10

+0

运行频率如何?每一帧?例如,在25秒内,调用了多少次'update'? –

不幸的是SKShapeNode被窃听,这个库组件周围有很多bug,其中大部分报告为here

您可以将SKShapeNode转换为纹理(textureFromNode),而不是将其与SKSpriteNode配合使用。

+0

嗨,谢谢你的回答,你是什么意思,通过使用'textureFromNode',你可以举一个例子,说明如何使用它并让它工作,因为我无法设法 – DevX10