gpt4 book ai didi

ios - 我是否正确地定义了 SKScene?

转载 作者:行者123 更新时间:2023-11-30 13:15:11 26 4
gpt4 key购买 nike

我有一个粒子,通过 SKScene 添加到 UIViewController 中。以下是我的 SKScene 代码:

class MyScene : SKScene {
private var emitterNode: SKEmitterNode?

deinit {
emitterNode?.removeAllActions()
emitterNode?.removeFromParent()
self.removeAllChildren()
}

override init(size: CGSize) {
super.init(size: size)
self.backgroundColor = UIColor.whiteColor()
let emitterPath = NSBundle.mainBundle().pathForResource("MyParticle", ofType: "sks")
emitterNode = NSKeyedUnarchiver.unarchiveObjectWithFile(emitterPath!) as? SKEmitterNode
emitterNode!.name = "myParticle"
emitterNode!.targetNode = self.scene
emitterNode!.position = CGPointMake(self.frame.size.width/2, 15)
self.addChild(emitterNode!)
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

我对SKScene了解不多,但我在deinit内部产生了一个罕见的错误,位于emitterNode?.removeFromParent( )。我的代码正确吗?

最佳答案

您的问题是您过度删除了节点。 Deinit 删除发射器节点的父节点并找到您的请求,但没有对该节点的其他强引用,因此这会导致崩溃。

删除 deinit {} 方法,没有必要。请记住,在带有 ARCSwift 中,您不需要使用此方法,ARC 将为您取消初始化并释放内存。

希望这可以帮助你。

关于ios - 我是否正确地定义了 SKScene?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com