2010-10-27 29 views
3

使用Leaks儀器時我犯了一個錯誤,我認爲總活物是內存字節,所以我更新了我的文章!UITableView reloadData多次導致內存泄漏並減慢應用程序

[更新]

您好所有,

我面臨與這樣的問題:

我的申請本使用的UITableView實時數據,其可以含有最多34層定製的細胞,所以接收更新時數據,我必須爲該UITableView執行reloadData,它通常會重新加載2-3次/秒以更新2-5個單元格(此外,當單元格更新時,我使用UiView動畫來閃爍相關文本標籤)。

啓動應用程序時,一切正常,運行平穩,但在大約20至30分鐘內保持運行,速度變慢,有時會暫停。我確實使用了Leaks儀器來測試我的應用程序,並且看到啓動後它使用了大約17Mb的內存,但在20-30分鐘後,它使用了25k-28k的活物(內存爲1.7Mb),當我嘗試瀏覽過的所有屏幕,它使用最多80K居住對象(內存6.5MB) :(

我想這將是的UITableView重載多次引起我的應用程序中使用越來越多的內存一次又一次,並使其運行慢慢地。

所以有人知道如何解決這個問題,請幫助我,謝謝你!

+0

那麼,「泄漏」是否告訴你*什麼*對象被泄露? – 2010-10-27 02:48:54

+0

向我們展示一些代碼。你使用'dequeueResusableCellWithIdentifier:'? – tia 2010-10-27 03:20:24

+0

@David:泄漏工具不能準確地告訴我對象是什麼泄漏,它只是告訴對象類型和在哪個類中:( @tia:是的,我總是用cellIndentifier出隊單元 – 2010-10-27 03:37:29

回答

4
+0

親愛的Marcelo,我會試試這個,但如果需要更新的行在屏幕上不可見,那麼會發生什麼? – 2010-10-27 03:39:28

+0

然後UITableView將不會執行任何操作,只需要爲可見行創建單元格視圖 – 2010-10-27 05:49:39

+0

感謝Marcelo,它運行良好,只需花費一些更多的代碼來檢查哪一行應該重新加載:) – 2010-10-28 10:32:55

2

正確的內存泄漏,而不是解決辦法...

在每個數據接收你不應該釋放增加你的內存大小的所有數據。

+0

親愛的Benoit,我認爲總生命對象是內存時犯了一個錯誤;(我更新了我的帖子 – 2010-10-27 06:24:57

+0

我會再次檢查我的代碼,希望找出根本原因:( – 2010-10-27 06:27:25

+0

謝謝Benoit,我沒有重新考慮我的代碼以減少增加內存,現在更好 – 2010-10-28 10:34:08