UITableView中的cell的優化

2021-07-09 11:25:14 字數 1042 閱讀 7858

1.cell的重用

所謂的cell的重用就是,檢視載入的時候只會建立當前檢視中的cell,或者比當前檢視多一點的cell, 當檢視滾動的時候,滾出螢幕的cell會放進快取中,滾進螢幕的cell會根據identifier從快取中獲取cell,如此的迴圈往復,這樣只會建立固定的cell物件,節省了記憶體。

下面是重用cell的**:

1>定義重用的標識

static  nsstring *reuseid = @"tg";

2>從快取中獲取重用cell

cztgcell *cell = [tableview dequeuereusablecellwithidentifier:reuseid];

3>判斷如果cell等於nil 就建立cell

if (cell == nil)

return cell; 

2.為什麼定義重用識別符號的時候,定義為靜態的

cell呼叫的次數相當多,會建立多次識別符號物件,而靜態的變數只會建立一次開闢一塊記憶體,節省了記憶體空間。

3.cell的init方法的注意點

重寫init方法,新增子控制項時,在這個方法中,需要對控制項的一次性屬性進行設定,所謂的一次性屬性,指的是像文字的大小啊文字的顏色啊之類的固定值,因為這些屬性和資料沒有關係,提高了效能。

注意:設定控制項的frame,直接在init方法中headview的frame沒有效果,所以要在layoutsubviews方法中設定各個子控制項的frame,這個方法必須重寫父類的方法。

4.cell重用的時候,不光要覆蓋資料,也應該要覆蓋對應的狀態,否則重用的時候會把狀態和資料都會重用

重用解決:在重寫模型的set方法,覆蓋資料和狀態。

5.cell的行高的問題

cell建立之前多次計算行高,如果行高是固定的,那盡量少用下面的**方法,因為它會多次呼叫並計算行高,可以用tableview的rowheight屬性

-(cgfloat)tableview:(uitableview *)tableview estimatedheightforrowatindexpath:(nsindexpath *)indexpath;

swift中UITableView的使用

自定義cell import uikit class tableviewcell uitableviewcell 乙個類a如果有自己獨有的初始化方法,自定義類b的時候如果b繼承自a。此時就重寫a類獨有的初始化方法 override init style uitableviewcell.cellsty...

UITableView中協議的簡單實現

uitableview 在uiviewcontroller之後新增,uitableviewdelegate和 uitableviewdatasource在objective c中稱之為協議,要實現協議中必要的方法 因為有可選的方法 為什麼要使用這兩個協議呢?因為我們要將資料填充到uitablevie...

UITableView 中倒計時

變數 int keeptime nstimer timer timer 事件中keeptime 思路 在cell中單獨寫乙個更新時間顯示的方法,每次呼叫該方法時,只需要把已知時間 keeptime,再進行計算就可以了。1.以秒為單位倒計時 將timer的timeinterval設定為1,這種只需要t...