我跟着本教程:http://blogs.captechconsulting.com/blog/john-morrison/ios-getting-started-accelerometer-data讓我的iPhone應用程序收聽加速度計。將CMMotionManager添加到我的AppDelegate,並添加了一個屬性以讀取視圖控制器中應用程序的CMMotionManager。現在我在我的應用程序中收到內存使用警告。ios cmmotionanager內存使用情況
我迷上應用到內存分析器工具,並可以看到我的內存使用線性增長,當我不與應用程序交互,它是靜止的坐在桌子上。罪魁禍首似乎在此代碼:
[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,並且被用來跟蹤最近的一次電話的移動。另一個線程慢慢計數器隨着時間的推移回落到零復位......但啓用/禁用該線程似乎並沒有影響到內存的使用,所以我已經離開的代碼了...
我看不到任何東西在網絡上警告CMMotionManager可能會導致過多的內存使用情況,但每隔一分鐘我就會讓我的應用程序運行,另外消耗5兆內存......是否有任何技巧可以幫助解決我的問題?
本教程在應用程序中聲明瞭CMMotionManager門,但是對於咧嘴笑聲,我將alloc移到了視圖控制器中,大多數教程都有它。 - 當我將分配移動到視圖控制器時,內存「泄漏」消失了......現在內存使用看起來更加穩定......但是我不想使用一個通用的CMMotionManager嗎?這不是更好嗎?... *發牢騷* – jkrebsbach