首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多任务CMMotionManager

多任务CMMotionManager
EN

Stack Overflow用户
提问于 2012-02-13 09:14:15
回答 1查看 1.5K关注 0票数 2

我在我的应用程序中使用CMMotionManager,这样我就可以获得设备运动信息。我有以下两种方法:

代码语言:javascript
复制
- (void)startDeviceMotion { 
    motionManager = [[CMMotionManager alloc] init];
    motionManager.showsDeviceMovementDisplay = YES;
    motionManager.deviceMotionUpdateInterval = 1.0 / 120.0;
    [motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
}

二是:

代码语言:javascript
复制
- (void)stopDeviceMotion {
    [motionManager stopDeviceMotionUpdates];
    [motionManager release];
    motionManager = nil;
}

它们分别在应用程序启动和应用程序完成时启动。我现在的问题是多任务处理。如果我把我的问题放到后台,然后再次将它带到前台,我就会得到一条消息(在NSZombie激活的情况下),它告诉我正在将一条[CMMotionManager retain]消息发送到一个已分配的实例。

我的问题在哪里?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-02-17 08:56:22

尝试使用乔纳森的建议。基本上,为了确保只创建了CMMotionManager的一个实例,将motionManager放在AppDelegate中,并在任何您想使用motionManager的地方通过这个方法检索它。

代码语言:javascript
复制
 -(CMMotionManager *)motionManager
 {
    CMMotionManager *motionManager = nil;
    id appDelegate = [UIApplication sharedApplication].delegate;
    if ([appDelegate respondsToSelector:@selector(motionManager)]) {
    motionManager = [appDelegate motionManager];
 }
 return motionManager;
}

如果这对你有用的话请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9257942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档