2009-07-22 30 views
0

我已經在UIScrollView中實現了大量視圖。由於我的應用程序的性質,我無法使用表格視圖。removeFromSuperView /內存/動態視圖切換

基本上我有一個'塊'的視圖控制器本身,在UIScrollView內的集合。一切正常,但內存是非常大的頁面上的問題。我已經成功地實現了動態添加子視圖(當它們出現在屏幕上時,它們被放置並添加到父視圖中)。這些塊本身是一次性設置和創建的,但它們的實際視圖(即block.view)不會添加到大容器中,直到它們出現在屏幕上。這很好,但我需要一種方法,一旦他們離開屏幕,從內存中刪除視圖。 removeFromSuperView確實使它們消失,但不會減少內存使用量。

如果我立即刪除FromSuperView,在addSubview之後,塊不顯示,並且內存不上。如果我在抽獎週期後刪除了FromFromSuperview,那麼即使您再也看不到視圖,該內存會在抽籤中上升並且不會回落。這就像視圖被緩存直到我實際釋放整個視圖。這是沒有意義的,因爲它在繪製之前沒有使用太多的內存,即使它已經被創建。

我不能釋放視圖,因爲它屬於我的塊(viewcontroller),它包含很多其他(例如佈局)信息。我只需要回憶回憶。我知道在繪製循環之前將視圖保存在內存中不會導致內存上升,因此我不需要去除它。

例如,如果我保留而不是addSubview,我知道我的視圖仍然存在,但它並沒有使用幾乎一樣多的內存。

我試圖調用存儲在VC

回答

0

我認爲UIViews是聰明,直到它顯示本身沒有實際分配層警告。這就是爲什麼你沒有看到內存使用情況,直到你將它添加到超級視圖。

您應該做的是在需要之前不要創建視圖,並且一旦從滾動視圖中刪除視圖就會釋放視圖。這樣,圖層將被釋放。

基本上,您需要執行loadView以創建(並重新創建)通過view屬性訪問的視圖。