一、 在代理方法中作了過多的計算佔用了 UI 線程的時間優化
二、同上spa
三、Cell 中 view 的組織複雜,好比使用layer並不會有太大影響,可是若是layer使用了透明,或者圓角、變形等效果,就會影響到繪製速度。線程
關於第一點,首先要明白 tableview 的代理(這裏指 datasource 和 delegate 的那套方法,下同)方法的調用順序,和時機。對於通常的應用會有以下順序:代理
一、向代理要 number Of Rows。文檔
二、對於每行向代理要 height For Row At Index Path。io
三、向代理要 當前屏幕可見的 cell For Row At Index Path 。(實測顯示4寸屏的手機會取 屏幕顯示數量+2,3.5寸屏同4寸屏數量,雖然3.5寸屏可顯示的cell 數量要小於 4寸屏!)table
四、而後 cell 就顯示出來了。class
tableView:heightForRowAtIndexPath:方法
不少人都把優化的重點放到了 cell for row at indexpath 那個方法裏了,在這裏儘量的少計算,可是卻忽略了另外一個很輕鬆就能提高加載時間的方法 :xpath
對於高度的計算,還有個小細節須要注意,就是若是 row 的高度都必定,那就刪除代理中的這個 tableView:heightForRowAtIndexPath: 方法,設置 Table View 的 rowHeight 屬性,類似的 numberOfRowsInSection: 系列的方法,我就不都寫出來了。蘋果的文檔裏介紹這樣也能夠減小了調用時間。
在建立tableView方法時將行高設置 Table View 的 rowHeight 屬性
//設置tableView的行高爲50,不要再寫代理方法 若是高度不同另外計算,這個方法只限行高同樣的時候使用
self.tableView.rowHeight=50;