错误:'NSOperationQueue'已重命名为OperationQueue

时间:2016-10-17 04:26:06

标签: ios swift xcode accelerometer nsoperationqueue

在Xcode 8.0中,我在编译Swift 3.0时遇到错误

错误:“'NSOperationQueue'已重命名为OperationQueue”

当我切换到OperationQueue.mainQueue()时,方法“mainQueue”不存在!什么被它取代了???

    let manager = CMMotionManager()
    if manager.isGyroAvailable {
        manager.gyroUpdateInterval = 0.1
        manager.startGyroUpdates()
        let queue = NSOperationQueue.mainQueue()
        manager.startGyroUpdatesToQueue(queue) {
            (data, error) in
            // ...
        }
    }
    if manager.isAccelerometerAvailable {
        manager.accelerometerUpdateInterval = 0.01
        manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) {
            [weak self] (data: CMAccelerometerData?, error: NSError?) in
            if let acceleration = data?.acceleration {
                self.physicsWorld.gravity = CGVectorMake(acceleration.x, acceleration.y)
            }
        }
    }

如何修复上述代码,以便正确格式化NSOperationQueues?

1 个答案:

答案 0 :(得分:1)

OperationQueue.main

相当简单。实际上,在您的代码中,您可以跳过一个步骤,只需编写.main,其中需要一个操作队列。所以:

manager.startGyroUpdatesToQueue(.main) {