1. 程式人生 > >UITableView效能優化的幾種方式

UITableView效能優化的幾種方式

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;

轉載自小碼哥筆記