1、Cell 的復(fù)用機(jī)制
2、子線程加載延時操作,主線程更新即可
3、IO操作(延時操作),讀取文件和寫入文件,最好在cell顯示之前將文件讀取到內(nèi)存(如程序加載時即讀取)
4、緩存 cell 的行高(因?yàn)槿绻鶕?jù) cell 的約束確定行高,每當(dāng)顯示之前都需要計(jì)算)
5、注意使用預(yù)估行高(預(yù)估行高會使 cell 在顯示之前才會去計(jì)算)
6、cellForRowAtIndexPath里面.
? ? ? ? *.盡量不要做耗時的操作,如果避免不了使用子線程來處理
? ? ? ? *.從本地加載圖片,contentOfFile,會在主線程,讀文件是本來就是耗時的操作,一進(jìn)入界面就先用子線程去本地加載圖片 NSCache
? ? ? ?*.不要在cellForRowAtIndexPath里面寫文件
? ? ? ?*.cellForRowAtIndexPath里面不要去創(chuàng)建和刪除view,最好是先懶加載好,顯示就view.hidden = false,不要顯示view.hidden = true
7、使用tableView dequeueReusableCellWithIdentifier:forIndexPath時會調(diào)用tableView:heightForRowAtIndexPath: ,注意會延時的操作
8、tableView滾動的時候停下gif.視頻
9、view的透明層,能不設(shè)置就不設(shè)置,view盡量不要設(shè)置transform
10、視圖層次結(jié)構(gòu)不要太多
11、盡量不要圖層圓角,1.將圖片畫成圓角2.讓美工提供一張中間是圓角透明的圖片遮在圖片上面
12、盡量不要去設(shè)置圖層陰影,會造成額外的開銷(離屏渲染) 離屏渲染:GPU在還沒有渲染到屏幕上之前要多做的一次渲染 :虛擬機(jī)--》Debug --》Color XXX
13、緩存cell的高度:cell高度不同的時候,最好只算一次,然后緩存起來,下次直接使用緩存的高度
14、圖片的拉伸或壓縮會影響性能(最好一樣大)
15. AsyncDisplayKit ---> 第三方:https://github.com/facebook/AsyncDisplayKit