Profiler顯示CFRunLoopRun在20秒內被調用超過1000次,佔用85%,而我所做的只是滾動。 UITableView滾動看起來很遲鈍,我不知道是什麼導致了問題,並專門調用CFRunLoopRun。 我有一個自定義單元格,顯示圖像和一些標籤的UITableView。該圖像使用dispatch_async(dispatch_get_global_queue,..)加載到後臺線程中,所以我不認爲這是造成它的原因。 imageView有圓角和邊框,標籤也有圓角和背景顏色。 我很抱歉如此不明確,但有人遇到過類似的事情嗎?設置UIImageView後多次調用CFRunLoopRun
編輯1:
我在它看了一遍,發現CA渲染,佈局,ImageProvider佔據了大部分。這裏是調用樹
編輯2的圖片:
我已經想通了,設置ImageView的圖像調用上述方法。如果我評論這一行代碼,我設置圖像一切正常。 我現在的問題是:爲什麼這麼慢?我讀過一些評論,我必須首先壓縮的背景圖像,從而使UIImageView的不必做在主線程的工作,但我不能拿出一個很好的解決方案
您能顯示更多信息,如實際堆棧跟蹤的截圖或文本嗎? – jtbandes
上述Profiler堆棧中沒有任何內容表明CFRunLoopRun存在任何問題。所有的時間都在JPEG解碼中吃掉。如果不瞭解你如何編寫加載代碼和渲染代碼,我認爲我們不能特別幫助你。當你說你必須「首先在背景中壓縮圖像」時,你不清楚你在說什麼。你還沒有解釋什麼形象,你爲什麼要壓縮它,或者其他什麼。幾乎可以肯定的是,你在桌子單元格繪圖中只是做了太多的工作;或者你產生了太多的塊。但沒有一些提示,我們不能真正幫助 –
我還沒有使用過多的分析器,所以對於錯誤的信息感到抱歉。 – Yannick