【UITableViewCell的重用 Objective-C语言】

本文介绍了Objective-C中UITableView的单元格属性查看方法,通过Xcode的偏好设置调整字体大小以清晰查看。接着,详细阐述了单元格的重用机制,包括数据源方法的调用次数、如何跟踪单元格的创建和销毁。讲解了通过给单元格指定重用ID,利用`dequeueReusableCellWithIdentifier:`方法实现单元格重用,从而提高性能,避免频繁创建和销毁单元格导致的资源浪费。最后,通过代码示例展示了如何在实践中应用单元格重用,并通过打印单元格地址验证重用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、UITableViewCell有哪些属性,怎么看,

1.可以按住command键,点开这个UITableView,看到如下界面:

单元格属性

这个时候,文字比较大,你可能看起来不是很清楚,这个时候,可以点击左上角的xcode,选择Preference,

在这里插入图片描述

让它变小一些,

在这里插入图片描述

文字变小,变成12以后,这些属性,是不是对的很齐啊

在这里插入图片描述

这时候,我们单元格所有的属性,都可以看到,比如说,第一个是什么,

1)imageView,

2)textLabel,

3)detailTextLabel,

4)contentView,

5)backgroundView,

6)selectedBackgroundView,

7)multipleSelectionBackgroundView,多选时的背景view,

是不是有这么多的属性,

每一个属性,一个一个的都可以看,

所以说,你直接在这里,就能找到它的属性,

不需要打开帮助啥的,这里也有简单的注释嘛,

所以说,当你把这个字体放的很大的时候,你会眼花缭乱,看不清,把字体放小一些的时候,就可以很清楚的看到人家这个代码注释了

二、那么,接下来,我们就来说另外一个问题,单元格的重用,

1.我们这里有三个数据源方法:

1)numberOfSectionsInTableView:返回多少个组,

2)numberOfRowsInSection:返回每组有多少个行,

3)cellForRowAtIndexPath:返回每一组每一行的单元格,

我在每个数据源方法里,都打印一句话,看看这些数据源方法,什么时候调,调几次,

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

NSLog(@“numberOfSectionsInTableView”);

return 1;

}

只要调这个方法,就会打印这句话,

- (UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

NSLog(@“numberOfRowsInSection-----组索引:%ld”,section);

return self.heros.count;

}

在这里插入图片描述

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

NSLog(@“cellForRowAtIndexPath--------组索引:%ld,行索引:%ld”,(long)indexPath.section,(long)indexPath.row);

//1.获取模型数据

CZHero *model = self.heros[indexPath.row];

//2.创建单元格

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];

//3.把模型数据设置给单元格

cell.imageView.image = [UIImage imageNamed:model.icon];

}

这样我们每次调这个方法的时候,就能打印组索引和行索引吧,

我们现在重新运行一下看看每一个方法调用多少次,每一个组索引和行索引是多少,

在这里插入图片描述

我们运行起来之后,发现numberOfSectionsInTableView,这里调了一次,

然后呢,numberOfRowsInSection,这里调了一次,

因为整体就一组,所以说,组索引就是0,

看前面六行,这两个方法一共就调了三次,

这两个方法,每个方法调了三次,

程序运行起来之后,UITableView问了三次数据源对象,现在一共有几个组啊,现在一共有几个组啊,现在一共有几个组啊,一共问了三次,

先是问现在一共有几个组,然后又问第0组有几行啊,

然后又问了一次,现在一共有几个组啊,第0组有几行啊,

然后又问了一次,现在一共有几个组啊,第0组有几行啊,

接下来,我们这个数据源方法,就是TableView返回TableView中每一个单元格的这么一个方法,这个数据源方法被调了几次,

被调了六次,

因为现在只有1个组,没有分多组,所以组索引始终都是0,

在显示第0组第0行的时候,TableView问它:第0组第0行应该显示什么样的单元格呢,又调这个数据源方法,又返回一个单元格,

在显示第0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值