如果加速度计的事件处理程序需要在以下一个UIAcceleration *
:为什么在iOS中,我们无法声明“UIAcceleration accelerationCurrent;” ViewController类中的实例变量?
-(void) accelerometer:(UIAccelerometer *)accelerometer
didAccelerate:(UIAcceleration *)acceleration {
那么如果ViewController
有一个实例变量:
UIAcceleration accelerationCurrent;
然后为了记住加速的当前状态,我使用
accelerationCurrent = *acceleration;
在Accelerometer事件处理程序中。但.h
文件中的实例变量声明给出了错误,因为“接口类型不能静态分配”。
我想UIAcceleration
仅有3双打:X,Y,Z,因此,如果我们可以用CGPoint aPoint
那里,为什么我们不能用UIAcceleration accelerationCurrent
,以及我们如何能够保持加速而不复制X,Y,Z的个体,但使用一个UIAcceleration
对象? (如果我们声明一个指针,并复制指针(引用),那么在离开加速器事件处理程序时,指针可能指向非法的内存空间)。
我想我们将需要单独复制x,y,z或者typedef我们自己的结构来完成复制?使用'CMAcceleration'应该可以工作,因为它是一个结构体?但它不会允许 – 2012-04-27 02:40:24
@动静能量是的,'CMAcceleration'完全符合法案。你可以存储它,而不是三个单独的项目(除非你还需要一个时间戳,它听起来不像你这样做)。但是,您需要自己编写从'UIAcceleration'到'CMAcceleration'的转换,因此您的代码看起来像是'cmAccelCurrent = CopyToCmAcceleration(加速)'或'CopyToCmAcceleration(&cmAccelCurrent,加速度)'。 – dasblinkenlight 2012-04-27 02:45:35