CMAccelerometerData类比。 不推荐使用UIAccelerometer类

根据此文档, CMAccelerometerData类 (在Core Motion框架中找到)具有CMAcceleration类型的属性,称为acceleration ,它是包含3个值(double x,double y,double z)的struct的typedef

我是Objective-C的新手(我只知道C ++ ..)所以我的问题是:我如何访问,假设在我的代码中的某个时刻保留在该属性中的双y值?

我是否首先创建一个CMAccelerometerData类的实例,如下所示:

CMAccelerometerData *myAccelerometer; 

然后访问其加速属性:

 double axisYvalue = [myAccelerometer acceleration]; 

以上显然是错的,不是吗? 我必须特别在加速中找到Y,所以我该怎么做?

 double axisYvalue = [myAccelerometer acceleration->y]; // no this is wrong as well.. 

那怎么办呢?

最后一个问题,如果我可以:)

鉴于我提到的这个特定的类和属性..并且假设我已经实例化了我的CMAccelerometer类..现在每次,在我的代码中,我使用类似的东西

 return [myAccelerometer acceleration->y]; // let's say that's the correct version :) 

在一些 – (双)方法..我将在正在进行调用的特定时刻获得Y轴的值?

我问这个是因为我在阅读现在已弃用的UIAccelerometer类时感到困惑,你必须定义间隔并经常更新x,y,z的值等等。现在我可以获得正在运行的值在Y轴上调用加速属性的那一刻,是不是这样?

phew …抱歉这段文字的长度! 🙂

来自C ++,我认为假设你理解指针是安全的。 第一行:

 CMAccelerometerData *myAccelerometer; 

…没有创建实例,它声明了一个指向实例的指针 ,它不会指向任何有效的实例。 要获得有效的实例,您将永远不会自己创建其中一个实例。 相反,您将使用CMMotionManager类的“ accelerometerData属性来获取指向有效对象的指针:

 // Sometime earlier... CMMotionManager* manager = [[CMMotionManager alloc] init]; [manager startAccelerometerUpdates]; // Sometime in the present... // Get a ref to the most recent accelerometer data. CMAccelerometerData* data = [manager accelerometerData]; // Access it. double x = [data acceleration].x; 

您可以访问readonly属性

 myAccelerometer.acceleration 

这将返回三个双精度的结构

 myAccelerometer.acceleration.y (gives the y at that specific moment the call is being made)