UITableView效能優化的幾種方式
阿新 • • 發佈:2019-02-18
tableView效能優化 - cell的迴圈利用方式1
/**
* 什麼時候呼叫:每當有一個cell進入視野範圍內就會呼叫
*/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 0.重用標識
// 被static修飾的區域性變數:只會初始化一次,在整個程式執行過程中,只有一份記憶體
static NSString *ID = @"cell";
// 1.先根據cell的標識去快取池中查詢可迴圈利用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 2.如果cell為nil(快取池找不到對應的cell)
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
// 3.覆蓋資料
cell.textLabel.text = [NSString stringWithFormat:@"testdata - %zd" , indexPath.row];
return cell;
}
tableView效能優化 - cell的迴圈利用方式2
- 定義一個全域性變數
// 定義重用標識
NSString *ID = @"cell";
- 註冊某個標識對應的cell型別
// 在這個方法中註冊cell
- (void)viewDidLoad {
[super viewDidLoad];
// 註冊某個標識對應的cell型別
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID];
}
- 在資料來源方法中返回cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 1.去快取池中查詢cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 2.覆蓋資料
cell.textLabel.text = [NSString stringWithFormat:@"testdata - %zd", indexPath.row];
return cell;
}
tableView效能優化 - cell的迴圈利用方式3
在storyboard中設定UITableView的Dynamic Prototypes Cell
設定cell的重用標識
在程式碼中利用重用標識獲取cell
// 0.重用標識
// 被static修飾的區域性變數:只會初始化一次,在整個程式執行過程中,只有一份記憶體
static NSString *ID = @"cell";
// 1.先根據cell的標識去快取池中查詢可迴圈利用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 2.覆蓋資料
cell.textLabel.text = [NSString stringWithFormat:@"cell - %zd", indexPath.row];
return cell;
轉載自小碼哥筆記