ios cmmotionanager内存使用情况

时间:2013-06-21 02:07:23

标签: ios memory-leaks uiaccelerometer cmmotionmanager

我按照本教程:http://blogs.captechconsulting.com/blog/john-morrison/ios-getting-started-accelerometer-data让我的iPhone应用程序听取加速度计。将CMMotionManager添加到我的AppDelegate,并添加了一个属性来读取viewcontroller中应用程序的CMMotionManager。现在我在我的应用程序上收到内存使用警告。

我将应用程序连接到内存分析器工具,并且当我没有与应用程序交互并且它静止地坐在桌子上时,可以看到我的内存使用量线性增长。罪魁祸首似乎在这段代码中:

[self.motionManager setDeviceMotionUpdateInterval:0.1];
aQueue=[[NSOperationQueue alloc]init];
[self.motionManager     startDeviceMotionUpdatesToQueue:aQueue
 withHandler:^(CMDeviceMotion *motion, NSError *error)
 {
     if (motion.userAcceleration.x > movementThreshold || motion.userAcceleration.y > movementThreshold || motion.userAcceleration.z > movementThreshold) {
         movementCount = 5;
     };

     motion = nil;
 }];

第一个示例将队列定义为内联,作为最后的手段,我将队列移动为我的视图控制器的成员变量 - 似乎没有太大的影响。当我没有打开更新间隔时,我没有看到内存使用量增长。当我打开更新间隔时,内存会增长。

movementCount被声明为viewController的私有int,用于跟踪最近的手机移动。另一个线程随着时间的推移慢慢地将计数器重置为零......但是启用/禁用该线程似乎不会影响内存使用,所以我将代码保留为...

我没有在网上看到任何警告说CMMotionManager会导致过多的内存使用,但是每次让我的应用程序运行时,都会消耗另外5兆内存...是否有任何技巧可以帮助您问题的根源?...

1 个答案:

答案 0 :(得分:1)

看起来我正在查看错误的专栏(截图) - 应该使用“Live Bytes”但是正在查看“整体字节数”...我生命中有六个小时我没有回来...... 。