CMAccelerometerData类比。 弃用UIAccelerometer类(CMAcce

2019-10-16 23:17发布

基于此文档中,CMAccelerometerData类 (在核心运动框架发现)具有称为加速度类型CMAcceleration的属性,它是含有3个值(双X,双Y,双Z)一个结构的一个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 :)

里面的一些- (double)方法..我将被在该呼叫正在取得特定时刻获得Y轴的价值?

我问这个,因为我念叨,你必须定义的时间间隔和更新X,Y的值,现在已经过时UIAccelerometer类时,Z每隔一段时间弄糊涂了等等。在那里像现在我可以说正在行使的价值在Y轴的加速度属性调用时的那一刻,是不是这样?

呼......对不起这个文本的长度! :)

Answer 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;


Answer 2:

您可以访问只读属性

myAccelerometer.acceleration

这将返回三个双打结构

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


文章来源: CMAccelerometerData class Vs. deprecated UIAccelerometer class