In my program, I currently define an SKSpriteNode
as weak
at the beginning of my code (in my GameScene
class) and declare it like this:
weak var tapFade: SKSpriteNode? = SKSpriteNode(color: UIColor.red, size: CGSize(width: 10, height: 10))
However, since it's weak
and has no current references, it is deleted and becomes nil
before I require its use. Also in my program, I initialise a weak SKLabelNode
like this:
weak var tapToBegin: SKLabelNode? = SKLabelNode(text: "Tap to Begin")
and it isn't deleted immediately unlike the SKSpriteNode
. The way I achieved this was by re-declaring the SKLabelNode
before I use it like this:
tapToBegin = SKLabelNode(text: "Tap to Begin")
This made the SKLabelNode
not nil
when I wanted to use it. Although, I tried re-declaring the SKSpriteNode
with this same approach, and it still was nil
.
Note: This is where the initialisations are and where I need to first use these nodes
in my program:
class GameScene: SKScene, SKPhysicsContactDelegate {
//Initialisations are here
weak var tapFade: SKSpriteNode? = SKSpriteNode(color: UIColor.red, size: CGSize(width: 10, height: 10))
weak var tapToBegin: SKLabelNode? = SKLabelNode(text: "Tap to Begin")
override func didMove(to view: SKView) {
//I first use these nodes here
}
}
Is there a way to prevent the SKSpriteNode
from immediately being de-initialised? In addition, why is the SKSpriteNode
being immediately deleted, and the SKLabelNode
not?