2009-05-03 146 views
0

我有一個NSTimer將觸發關每一秒,並且對第二我通過設置文本屬性,像這樣更新一個UILabel:UILabel內存泄漏?

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2]; 

它工作正常,但是當我在Xcode與開始運行,性能工具 - >泄漏,看起來內存只是在攀登攀爬攀爬。

從我的理解,字符串應該是autoreleased(雖然我從來沒有看到內存減少,或停止增加)。

這是內存泄漏嗎?有沒有更好的方法可以做到這一點,以檢查我的內存使用情況?

謝謝!

更新:代碼來創建計時器如下:

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES]; 

代碼清理在計時器完成如下:

[timeTimer invalidate]; 
[timeTimer release]; 
timeTimer = nil; 

什麼問題呢?我認爲一旦定時器結束,內存可能會被釋放,但事實並非如此。

+0

您是否明確確定這條線是不斷增長的記憶負責人(即評論它解決了問題)?也許你在其他地方泄漏。 – smorgan 2009-05-03 18:00:35

+0

是的,我確定這條線是有責任的。評論它解決了這個問題。 – user26218 2009-05-03 18:27:47

+0

雖然不相關,但我認爲你過度釋放timeTimer,因爲你在創建它時不保留實例。 – 2009-06-10 16:52:53

回答

1

我認爲問題在於我不瞭解性能工具。使用活動監視器運行不會增加內存使用量。

0

出於好奇,如果使用[remainingLbl setText:]而不是設置屬性,問題是否仍然會發生?你的代碼看起來很好...內存應該被清理,因爲stringWithFormat autoreleases字符串。

另一個需要嘗試的事情是:當你在Objective-C中創建線程時,你必須將所有的代碼包裝在一個NSAutoreleasePool中,以便在線程執行期間創建的東西被清除。這應該沒有什麼區別,因爲應該已經存在 - 但它值得一試。