2017-02-03 4 views
1

Je soupçonne que la fonction suivante, que je l'utilise dans ma classe GameScene afin de gérer l'entrée de l'accéléromètre, est de garder ma scène de deinitializing quand je transition vers une autre scène:Conserver le cycle suspecté dans la fermeture

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) 
     }) 
    } 
} 

C'est peut-être à cause de l'auto-capture, mais si c'est le cas, je n'ai aucune idée de l'endroit où mettre la liste de capture "[self unown] in".

Répondre

2

Vous devriez le mettre avant accelerometerData, error in comme celui-ci [unowned self] accelerometerData, error in

+0

Si elle a permis d'accepter la réponse s'il vous plaît. Merci! –

+0

Merci, ça marche et enfin ma scène de jeu est désinitialisée! – gionti