gpt4 book ai didi

iphone - 为什么在 iOS 中,我们不能在 ViewController 类中声明 "UIAcceleration accelerationCurrent;"实例变量?

转载 作者:行者123 更新时间:2023-12-01 19:21:06 24 4
gpt4 key购买 nike

如果 Accelerometer 的事件处理程序采用 UIAcceleration *在下面的:

-(void) accelerometer:(UIAccelerometer *)accelerometer 
didAccelerate:(UIAcceleration *)acceleration {

那么如果 ViewController有一个实例变量:
UIAcceleration accelerationCurrent;

然后为了记住加速度作为当前状态,我用
accelerationCurrent = *acceleration;

在加速度计事件处理程序中。但是 .h 中的实例变量声明文件给出了错误,因为“接口(interface)类型不能静态分配”。

我以为 UIAcceleration只是 3 个 double 数:x、y、z,所以如果我们可以使用 CGPoint aPoint那里,怎么不能用 UIAcceleration accelerationCurrent ,以及如何在不单独复制 x、y、z 而是使用一个 UIAcceleration 的情况下保持加速度目的? (如果我们声明一个指针,并复制指针(引用),那么在离开加速度计事件处理程序时,指针可能指向非法内存空间)。

最佳答案

即使 UIAcceleration只有四个数据成员(x、y、z 和时间戳)它不是 struct ,因此它不允许您静态引用它(即您需要使用指针)。这与 CGPoint 形成对比。 , 这是一个 C struct ,因此您可以通过指针或不使用指针来使用它。

不幸的是,没有办法复制您感兴趣的值:您是绝对正确的,一旦线程离开您的处理程序,UIAcceleration对象可能会在您背后重复使用。 UIAcceleration也不符合复制协议(protocol),因此您需要自己编写该复制例程。

关于iphone - 为什么在 iOS 中,我们不能在 ViewController 类中声明 "UIAcceleration accelerationCurrent;"实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com