2017-02-03 3 views
1

Ich vermute, dass die folgende Funktion, die ich in meiner GameScene-Klasse verwenden, um den Beschleunigungsmesser Eingang zu verwalten, meine Szene hält von Deinitialisieren, wenn ich zu einer anderen Szene übergehen:in Schließung

class GameScene: SKScene { 
    let motionManager = CMMotionManager() 
    var xAcceleration = CGFloat(0) 
    // Some stuff 
    // override func didMove(to: .... 

    func setupCoreMotion() { 
     motionManager.accelerometerUpdateInterval = 0.2 
     let queue = OperationQueue() 
     motionManager.startAccelerometerUpdates(to: queue, 
               withHandler: 
      { 
       accelerometerData, error in 
       guard let accelerometerData = accelerometerData else { 
        return 
       } 
       let acceleration = accelerometerData.acceleration 
       self.xAcceleration = (CGFloat(acceleration.x) * 0.75) + 
        (self.xAcceleration * 0.25) 
     }) 
    } 
} 

Vielleicht liegt es an der Selbsterfassung, aber wenn das der Fall ist, habe ich keine Ahnung, wo ich die Aufnahmeliste "[unbenanntes Selbst]" einfügen soll.

Antwort

2

sollten Sie es wie diese [unowned self] accelerometerData, error in

+0

vor accelerometerData, error in setzen: Wenn es Antwort akzeptieren geholfen. Vielen Dank! –

+0

Danke, es funktioniert und endlich ist meine Spielszene deinitialisiert! – gionti