刚开始摸索UITable的时候,一般用这中方式来加载数据,后来发现有比较大得性能问题
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:nil];
// 取出模型
PTHero *hero = self.heros[indexPath.row];
// 设置cell的数据
cell.textLabel.text = hero.name;
cell.detailTextLabel.text = hero.intro;
cell.imageView.image = [UIImage imageNamed:hero.icon];
return cell;
}
最后在网上查询一下,才知道tableView有一个缓存区,他会将已经从屏幕中消失的cell放到缓存区,等你再一次需要这种类型的cell时,可以直接去缓存区寻找如果有就拿来用,不用每次都创建新的cell。
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
根据标识“A”创建一个cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"A"];
//如果缓存区没有"A"类型的cell,则创建一个新的
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"A"];
}
PTHero* hero = self.heros[indexPath.row];
cell.textLabel.text = hero.name;
cell.detailTextLabel.text = hero.intro;
cell.imageView.image = [UIImage imageNamed:hero.icon];
return cell;
}