swift 计步器 func startUpdates

 self.pedometer.startUpdates (from: midnightOfToday, withHandler: { pedometerData, error in
            guard error == nil else {
                print(error!)
                return
            }

            //获取各个数据
            if let numberOfSteps = pedometerData?.numberOfSteps {
                self.steps = numberOfSteps.intValue

            } 
            //在线程中更新文本框数据
            DispatchQueue.main.async{
                        print(self.steps)
            }
                 })

    print(self.steps) }
    新手学习,为什么以上代码两个print的输出不相同?如何在withhandler这个闭包内赋值给外部变量?

你的withHandler 应该会不停的触发,而你两个print,一个是在主线程,一个是在当前的回调,这两个之间本来就不是同步的
self.steps = numberOfSteps.intValue
这里获取值后,是异步的 ,然后 print(self.steps)这里打印的时候,DispatchQueue.main.async这里面的已经可能发生变化了