根据this文档, CMAccelerometerData类(在Core Motion框架中找到)具有 CMAcceleration 类型的属性,名为 加速 ,它是包含3个值的结构的typedef(double x,double y,double z)
我是Objective-C的新手(我只知道C ++ ..)所以我的问题是:我如何访问,假设该属性中保存的 double 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轴的值?< / p>
我问这个是因为我在阅读现在已弃用的UIAccelerometer类时感到困惑,你必须定义间隔并经常更新x,y,z的值等等。 现在我可以在调用加速属性的那一刻获得在Y轴上运行的值,是不是这样呢?
p p ......抱歉这段文字很长! :)答案 0 :(得分:1)
来自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;
答案 1 :(得分:0)
您可以访问只读属性
myAccelerometer.acceleration
这将返回三个双精度的结构
myAccelerometer.acceleration.y (gives the y at that specific moment the call is being made)