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)