爲了解決一些性能問題,我開始回收一些視圖控制器。但是,如果已經繪製了該視圖,則只有在重新使用再循環控制器的視圖時纔會出現性能優勢。舉例來說,如果我想用控制器預先填充回收隊列,但從不將其視圖放在屏幕上,我就沒有這種好處。強制控制器查看內存
我該如何強制控制器的視圖被「預渲染」並添加到我的隊列中,這樣當它被回收時,我收到了我從其他回收控制器看到的性能優勢?我知道首次需要時會創建一個控制器視圖,但即使添加視圖並立即刪除它(在顯示父視圖之前)似乎也無法實現。
爲了解決一些性能問題,我開始回收一些視圖控制器。但是,如果已經繪製了該視圖,則只有在重新使用再循環控制器的視圖時纔會出現性能優勢。舉例來說,如果我想用控制器預先填充回收隊列,但從不將其視圖放在屏幕上,我就沒有這種好處。強制控制器查看內存
我該如何強制控制器的視圖被「預渲染」並添加到我的隊列中,這樣當它被回收時,我收到了我從其他回收控制器看到的性能優勢?我知道首次需要時會創建一個控制器視圖,但即使添加視圖並立即刪除它(在顯示父視圖之前)似乎也無法實現。
我首先想到了一個快速而骯髒的方法來做到這一點,只是設置控制器的視圖隱藏,並仍然「畫」到屏幕上。
這就是說,我很好奇你所觀察到的「性能問題」。取決於創建UIViewController本身還是導致問題的UIViews,那麼可能會有更好的整體解決方案來解決這個問題。
我在用戶頁面上滾動瀏覽滾動視圖時,按需加載子視圖控制器。在較慢的設備上,當創建控制器並構建視圖時,滾動中會有一個明顯的粘滯點。回收控制器而不是創建每個控制器是有幫助的。 –
我不太明白你的問題。就像你說的那樣,ViewController的視圖首次被訪問時被加載。如果您在創建父級並在將它們放入隊列之前立即訪問其視圖,只是創建子ViewController,則初始加載時間應該更長,但在將ViewController子視圖添加到您的scrollView時應該沒有性能影響。如果這就是你正在執行的任務,並且你仍然存在性能問題,你能否發佈一些代碼以便我們看到問題? – David
性能問題是內存還是cpu相關? –
CPU/gpu -instruments指示它是視圖的繪圖 –