iOS开发中UITableview控件的基本使用及性能优化方法

2020-01-14 17:53:41于海丽

{
    return self.heros.count;
}
// 当一个cell出现视野范围内的时候就会调用
// 返回哪一组的哪一行显示什么内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 定义变量保存重用标记的值
    static NSString *identifier = @"hero";
    
//    1.先去缓存池中查找是否有满足条件的Cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
//    2.如果缓存池中没有符合条件的cell,就自己创建一个Cell
    if (cell == nil) {
        //    3.创建Cell, 并且设置一个唯一的标记
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
        NSLog(@"创建一个新的Cell");
    }
//    4.给cell设置数据
    NJHero *hero = self.heros[indexPath.row];
    cell.textLabel.text = hero.name;
    cell.detailTextLabel.text = hero.intro;
    cell.imageView.image = [UIImage imageNamed:hero.icon];
    
   //  NSLog(@"%@ - %d - %p", hero.name, indexPath.row, cell);
    
    // 3.返回cell
    return cell;
}

#pragma mark - 控制状态栏是否显示
/**
 *   返回YES代表隐藏状态栏, NO相反
 */
- (BOOL)prefersStatusBarHidden
{
    return YES;
}
@end


缓存优化的思路:

 

(1)先去缓存池中查找是否有满足条件的cell,若有那就直接拿来

(2)若没有,就自己创建一个cell

(3)创建cell,并且设置一个唯一的标记(把属于“”的给盖个章)

(4)给cell设置数据

注意点:

定义变量用来保存重用标记的值,这里不推荐使用宏(#define来处理),因为该变量只在这个作用域的内部使用,且如果使用宏定义的话,定义和使用位置太分散,不利于阅读程序。由于其值不变,没有必要每次都开辟一次,所以用static定义为一个静态变量。