【发布时间】:2016-07-13 16:30:22
【问题描述】:
我想知道释放从 SKSpriteNode 继承的 Set 对象的最佳方法是什么。我有以下代码:
class Raindrop : SKSpriteNode
{
weak var barSpriteRef: SKSpriteNode?
init(scene: SKScene, barSprite: SKSpriteNode)
{
let texture = SKTexture(imageNamed: "RainDrop")
super.init(texture: texture, color: SKColor.whiteColor(), size: texture.size())
barSpriteRef = barSprite
self.userInteractionEnabled = true
let width = scene.view!.frame.width
let randomPos = CGPointMake(CGFloat(arc4random()) % width, UIScreen.mainScreen().bounds.height + 50)
self.position = randomPos
self.zPosition = 1
self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
scene.addChild(self)
let moveDown = SKAction.moveToY(-UIScreen.mainScreen().bounds.height, duration: 8)
self.runAction(moveDown)
}
required init?(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
func kill()
{
self.removeAllActions()
self.removeFromParent()
}
}
函数 kill() 是我尝试解除分配,但它没有按预期工作。
我正在使用这样的集合:
var raindrops = Set<Raindrop>()
【问题讨论】:
-
您不应该尝试手动释放任何东西,ARC 会在没有引用对象时为您执行此操作。当您没有说出它在做什么或预期的行为是什么时,说“它没有按预期工作”是一个无用的陈述。
-
你永远不会从集合中移除雨滴,所以它不会释放。 parent 仅适用于
SKNodes,不适用于Sets
标签: ios swift sprite-kit automatic-ref-counting