2017-02-03 14 views
1

Я подозреваю, что следующая функция, который я использую в моем классе GameScene для того, чтобы управлять входом акселерометра, держит мою сцену из deinitializing, когда я перейти на другую сцену:Сохранил цикл, подозреваемый в закрытии

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

Это может быть из-за самозахвата, но если это так, я не знаю, где положить «[незанятое я] в« список захвата ».

ответ

2

Вы должны поставить его перед accelerometerData, error in как этот [unowned self] accelerometerData, error in

+0

Если это помогло, пожалуйста, примите ответ. Благодаря! –

+0

Спасибо, это работает, и, наконец, моя игровая сцена деинициализирована! – gionti