假设我的应用程序有两个选项卡,每个选项卡都有自己的视图控制器类。在第一个视图控制器中,我想显示加速度计数据,在第二个视图控制器中显示陀螺仪数据。所以我在这个新类中创建了新的类,称为 IMU 我有几个方法,例如获取运动管理器的实例并为其分配内存第二种方法采用运动管理器的实例和三个双精度值(x,y,z),该方法假设开始更新加速度计并指定间隔并开始加速度更新,最后将加速度计数据分配给传递的双精度值(x,y,z)现在,在第一个视图控制器中,加载方法正在调用该方法从 IMU 类中传递一个运动管理器的实例和三个双精度值(&x,&y,&z),
这是 IMU 类中的方法
-(void) getAcceleromaterData:(CMMotionManager *) motionManager and:(double *) x and: (double *)y and: (double *)z{
[motionManager startAccelerometerUpdates];
if (motionManager.accelerometerAvailable) {
motionManager.accelerometerUpdateInterval = 0.01;
queue = [NSOperationQueue currentQueue];
[motionManager startAccelerometerUpdatesToQueue:queue
withHandler: ^(CMAccelerometerData *AccelerometerData, NSError *error) {
CMAcceleration acceleration = AccelerometerData.acceleration;
*x = acceleration.x;
*y = acceleration.y;
*z = acceleration.z;
}];
}
}
这就是我在视图控制器中的调用方式
@implementation FirstViewController
double AccX, AccY, AccZ;
- (void)viewDidLoad
{
[super viewDidLoad];
self.imu = [IMU new];
self.motionManager = [CMMotionManager new];
[self.imu getAcceleromaterData:self.motionManager and:&AccX and:&AccY and:&AccZ];
// assign values to labels
self.accX.text = [NSString stringWithFormat:@"%0.5f", AccX];
self.accY.text = [NSString stringWithFormat:@"%0.5f", AccY];
self.accZ.text = [NSString stringWithFormat:@"%0.5f", AccZ];
}
希望更清楚