Muの北

学而不思则罔,思而不学则殆

2015年7月10日 UITableView 2

UITableView


UITableViewCell  的性能优化

原来的代码   这样的话 每当视图 中出现一条table 就会重新创建一个cell  会造成资源的浪费

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//    indexPath.row     行
//    indexPath.section   组
     AutomobileGroups* a1 = self.automobileGroups[indexPath.section];
   
    UITableViewCell* cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    cell.textLabel.text =  a1.automobiles[indexPath.row];
    return cell;
    
}


优化三部曲:

1.通过一个标示去缓存池中寻找可循环的cell

2.如果缓存池找不到可循环利用的cell:创建一个新的cell,给cell贴一个标示

3.给cell设置新的数据

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString* ID = @"car";
    
    //1.寻找缓存池中 是否有cell
    UITableViewCell* cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    
    //2.如果没有的话 创建一个
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    
    //3.重置信息
    carGroup* cg = self.groups[indexPath.section];
    car* c = cg.cars[indexPath.row];
    cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",c.icon]];
    cell.textLabel.text = [NSString stringWithFormat:@"%@",c.name];
    
    return  cell;
}

其中 static 也是很重要的优化 因为每次调用这个方法时都初始化一个id 也会消耗内存

如果有static 的话 只会在第一次 进行初始化


cell的 属性


显示 右边的索引

- (NSArray*)sectionIndexTitlesForTableView:(UITableView *)tableView{
    return [self.groups valueForKeyPath:@"title"];//kvc
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhyu789/article/details/46835601
文章标签: ios uitableview
个人分类: 日志
想对作者说点什么? 我来说一句

ASP.NET面试题

2009年07月11日 29KB 下载

2007年高考录取结果查询工具

2007年07月11日 2KB 下载

没有更多推荐了,返回首页

不良信息举报

2015年7月10日 UITableView 2

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭