SCNAction保留周期?

时间:2017-02-13 03:34:52

标签: swift scenekit

我已经开始使用Instruments并且发现我的小型Scenekit游戏包含许多内存泄漏,一次最多100个。大多数泄露的对象是 SCNActionFade,SCNCActionFade,SCNActionMove,SCNCActionMove,SCNActionRepeat SCNCActionRepeat。

我将讨论 SCNActionFade ,因为它是我代码中最简单的部分

/* Fade Out */
func fadeOut(node: SCNNode, duration: Double) {
    let fadeOutAction = SCNAction.fadeOutWithDuration(duration)
    node.runAction(fadeOutAction, completionHandler: { -> Void in
        node.removeAllActions()
        node.removeFromParentNode()
    })
}

SCNActionFade Retain Cycle

起初我认为问题出在-> Void in部分,因此我将其更改为unowned inweak in,但这并未停止保留周期。我在发布之前已对此进行过研究,但我很难过。

此外,仅当if语句为true时,才会在func renderer(renderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval) {内调用fadeOut。感谢。

0 个答案:

没有答案