2013-06-21 68 views
0

我跟着本教程: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兆內存......是否有任何技巧可以幫助解決我的問題?

+0

本教程在應用程序中聲明瞭CMMotionManager門,但是對於咧嘴笑聲,我將alloc移到了視圖控制器中,大多數教程都有它。 - 當我將分配移動到視圖控制器時,內存「泄漏」消失了......現在內存使用看起來更加穩定......但是我不想使用一個通用的CMMotionManager嗎?這不是更好嗎?... *發牢騷* – jkrebsbach

回答

1

貌似我一直在尋找在錯誤的列(截圖) - 應使用「實時字節」已經但看着「總體字節」 ......有去6小時我的生活我沒有收到回。 ..

+0

我想我意識到了這個問題 - 我正在看儀表板上的錯誤列。第一列說「總體字節數」 - 我認爲這是應用程序的總消耗量。顯然,列是應用程序在應用程序使用壽命期間使用的字節數,但不是當前使用的數字。我應該看到的列是第二列 - 「實時字節」 - 這是顯示實際使用的字節數的列。總體字節數永遠不會下降,但實時字節數會上升和下降。我不知道爲什麼我直到現在纔看到...... – jkrebsbach