1.cell重用
2.dequeueReusableCellWithIdentifier:forIndexPath:(會(huì)調(diào)用heightForRowAtIndexPath) 和 dequeueReusableCellWithIdentifier (后面這個(gè)不會(huì)再次調(diào)用heightForRowAtIndexPath)
? ? 2.1 tableView在cell顯示之前會(huì)調(diào)用heightForRowAtIndexPath,有多少個(gè)cell就會(huì)調(diào)用多少次, 算contentSize
? ? 2.2 使用了預(yù)估行高,并不會(huì)再顯示之前去計(jì)算獲取所有的行高,根據(jù)預(yù)估行高和實(shí)際行高來獲取cell的行高,先根據(jù)預(yù)估行高計(jì)算好要先獲取幾個(gè)cell,如果計(jì)算的這幾個(gè)cell高度確實(shí)夠(高度能超出屏幕的高度就不計(jì)算了.如果不夠還會(huì)計(jì)算),目的也是讓contentSize大于屏幕,就能滾動(dòng),后面要顯示,才來計(jì)算行高, 會(huì)發(fā)現(xiàn)滾動(dòng)條會(huì)跳
3.cell的高度是根據(jù)內(nèi)容變化的時(shí)候,只計(jì)算一次,將高度緩存起來
4.下載圖片使用SDWebImage(異步操作)
5.cellForRowAtIndexPath不要做耗時(shí)操作
1.讀取文件,寫入文件,最好是放到子線程,或先讀取好,在讓tableView去顯示
2.解壓資源
3.盡量少得計(jì)算計(jì)算,最好是先計(jì)算好,cellForRowAtIndexPath只做顯示
4.盡量不要去添加和移除view, 現(xiàn)將會(huì)用到的控件懶加載,要就顯示,不要就隱藏
6.tableView滾動(dòng)的時(shí)候,不要去做動(dòng)畫
7.cell里面的控件,約束最好不要使用remake,動(dòng)態(tài)添加約束是比較耗性能的
8.cell里面的控件,背景最好是不透明的 (圖層混合), view的背景顏色 clearColor 盡量少
9.圖片圓角不要使用 layer.cornerRadius
10.圖層最好不要使用陰影, 陰影會(huì)導(dǎo)致離屏渲染
11.異步繪制
12.柵格化
13.AsyncDisplayKit -> 不使用UIKit (UIView) ->??(Node)
14.借助工具來測(cè)試性能