以下是我所做的:
motion_manager.startAccelerometerUpdates(to: OperationQueue.current! , withHandler: { (AccelerometerData : CMAccelerometerData! , error : NSError! ) -> Void
in
self.output_acceleratoin_data(acceleration: AccelerometerData.acceleration)
if (error != nil){
print("\(error)")
}
} as! CMAccelerometerHandler )
//the above line is where I get the error
func output_acceleratoin_data( acceleration : CMAcceleration ){
print("\(acceleration.x) 2f " )
print("\(acceleration.y) 2f " )
print("\(acceleration.z) 2f " )
}
错误是以下主题:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
在屏幕上显示任何内容之前,应用程序崩溃了。知道怎么解决这个问题?
答案 0 :(得分:0)
这部分:
as! CMAccelerometerHandler
不应该是必要的,因为您传递的阻止已经是CMAccelerometerHandler
,我猜它会使事情混乱或扰乱。
我猜这是Xcode建议你做的但是......在这种情况下Xcode是错误的:)
由于withHandler:
参数是该函数的最后一个参数,您可以将其替换为所谓的trailing closure
因此。尝试用以下代码替换代码:
motion_managerstartAccelerometerUpdates(to: OperationQueue.current!) { (data, error) in
self.output_acceleratoin_data(acceleration: AccelerometerData.acceleration)
if (error != nil){
print("\(error)")
}
}
希望有所帮助。