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?