title: Referencing current SKScene from a SKSpriteNode
body: <p>In Apple's sample adventure game, they add sprites to the scene like so:</p>
  
  <p>Scene file has this function:</p>
  
  <pre><code>- (void)addNode:(SKNode *)node atWorldLayer:(APAWorldLayer)layer {
      SKNode *layerNode = self.layers[layer];
     [layerNode addChild:node];
  }
  </code></pre>
  
  <p>Class extending SKSpriteNode implements:</p>
  
  <pre><code>APAMultiplayerLayeredCharacterScene *scene = (id)[self scene];
  [scene addNode:emitter atWorldLayer:APAWorldLayerAboveCharacter];
  </code></pre>
  
  <p>This feels a bit dirty to me as it is basically a global function call from inside the class back out to the current scene. Is this acceptable practice, and are there any alternative approaches? Ideas that come to mind are:</p>
  
  <p>1) Pass the scene reference into the class and store it is a local member variable</p>
  
  <p>2) Notification/event listener setup</p>
  
  <p>As I'm new to Objective-C, I would love to hear if I'm missing or overlooking an ideal solution or approach to this type of code flow. Thanks!</p>