2011-05-30 64 views
1

我有一個自定義選項卡窗口小部件,其許多視圖的背景CALayer對象佔用太多的內存。我正在考慮爲後臺標籤發佈視圖,但如果我只是要求框架發佈支持CALayer(這是大部分內存正在發生的地方),並讓它按需重新創建,那將會更簡單。那可能嗎?釋放內存的回收層以回收內存?

嵌套視圖層次結構比平坦視圖層次結構消耗更多的內存,因爲有更多的CALayer對象,大多數是相同的像素?如果100 x 100視圖佔用X內存,是否意味着100 x 100子視圖的100 x 100視圖大約需要2倍?

爲什麼Apple沒有使用AppKit模型,程序員控制哪些視圖支持Core Animation圖層?這會消耗更少的內存,這與iOS OS相比在iOS上很少。謝謝。

回答

0

所有視圖在iOS上都是分層支持的,您無法控制這一點。

您應該只是釋放不活動的視圖並根據需要重新加載它們。

原因視圖在iOS上是分層支持的,這樣GPU就可以完成大部分繁重的工作。這大大降低了CPU的負載,使CPU可以用於實際工作或被節流下來以節省電力。

+0

是的,我明白這一點。我試圖說,當給定視圖的子視圖不是獨立的動畫或移動,並且都是不透明的時,是否需要爲每個視圖分別設置不同的圖層,而不是僅爲父視圖創建一個圖層?無論如何,謝謝你的回答。 – 2011-06-01 04:29:42