UITableViewCell的重用机制

UITabelView通常会显示大量数据,若是有多少条数据就新建多少个cell,那么对于内存来讲是种极大的负担,这样天然是不合理的,因此才会有重用机制spa

好比一个家庭办酒席,一共有13桌,每桌20个菜,那么准备150个左右的盘子就够盛菜了,若是盘子不够用了就把以前已经吃光菜的盘子收走洗洗干净就能重复使用了,这大体上就是重用机制的展现了code

 

 

下图显示的cell一共有6个blog

当把显示金毛的这个cell滚出屏幕外了,这个cell就会被自动放进重用池中。当哈士奇下面一个的cell出现的时候,就会自动去重用池中找一个cell使用,这样就避免了不停去建立cell致使内存崩溃的问题内存

 

下面是代码举例:it

//设置每行显示什么内容,也就是指定每一行的cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    //建立一个重用标识符
    static NSString *reuseIdentifier = @"reuse";
    
    //表视图经过重用标识符去重用池中查找是否有可以被重用的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    
    if (cell == nil) {
        //建立一个cell
        /**
         cell样式有四种
         default、subititle、value一、value2
         */
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier] autorelease];
        NSLog(@"建立了一个新的cell");
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    
    
    
    //指定cell内部空间的显示内容
    //重用池中取出的cell,并无释放,因此会保留原有的内容,若是想要显示本身的信息,须要对cell内部的控件进行从新赋值
//    cell.textLabel.text = @"你是朱珍洁吗";
//    cell.detailTextLabel.text = @"你才是猪";
    
    cell.textLabel.text = _dataArray[indexPath.section][indexPath.row];
    
    cell.imageView.image = [UIImage imageNamed:@"mao.jpg"];
    
    return cell;
}
相关文章
相关标签/搜索