01-UI基礎-04-02-UITableView補充

##利用緩存池優化列表顯示緩存

  1. 爲全部能現實在用戶面前的cell分配內存地址
  2. 當一個cell移除用戶視野,對應的下一個出現的cell會利用該cell的內存地址

下面是代碼部分優化

/**
 *  每一行顯示怎麼樣的內容(call)
 *
 */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    // 1.經過一個標示去緩存池中尋找可循環利用的cell
    // dequeue:出列(查找)
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"A"];
    
    // 2.若是沒有可循環利用的cell,就建立
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"A"];
    }
    // 3.給cell設置新的數據
    YSHero *hero = self.heros[indexPath.row];
    cell.textLabel.text = hero.name;
    cell.detailTextLabel.text = hero.intro;
    cell.imageView.image = [UIImage imageNamed:hero.icon];
    
    // 設置cell指示器類型
    //    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    // 設置cell指示器view
    cell.accessoryView = [[UISwitch alloc] init];
    
    // 設置背景色(不用設置View寬高)
    UIView *bgView = [[UIView alloc] init];
    bgView.backgroundColor = [UIColor whiteColor];
    cell.backgroundView = bgView;
    // 設置選中的單選框背景
    UIView *selectView = [[UIView alloc] init];
    selectView.backgroundColor = [UIColor brownColor];
    cell.selectedBackgroundView = selectView;
    NSLog(@"%d-%@-%p",indexPath.row,hero.name,cell);
    return cell;
}

實際內存地址使用狀況以下。上下移動列表,其內存地址老是保持着11個不一樣的值,且互相切換。 code

相關文章
相關標籤/搜索