【发布时间】:2017-01-27 01:54:57
【问题描述】:
我正在用 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。
是我忘记了什么,还是只是路径增加太多而无法处理?
【问题讨论】:
-
您为什么不尝试尝试更改已经存在的
shapeLine的路径,看看是否部分问题来自于不断创建新的SKShapeNode。换句话说,创建一次shapeLine,然后再创建一次,只需更新路径即可。 -
已经试过了,结果一样:/
-
多久运行一次?每一帧?例如在这 25 秒内,
update被调用了多少次? -
什么意思?我已经写好了帧率,取平均 25fps,所以 25fps * 25s 给出了 udate 被调用的次数
-
但是我也注意到它只是玩家拥有的属性是25s,如果我将一些属性更改为速度它也可能在5s左右崩溃。我很确定这是 Alessandro 说的那样回答的错误!
标签: ios xcode memory memory-leaks sprite-kit