首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UITableView不重用单元格,这样做很好的理由吗?

UITableView不重用单元格的做法并不是一个好的选择。UITableView是iOS开发中常用的控件,用于展示大量数据,并且能够实现滚动和复用单元格的功能,以提高性能和内存利用率。

重用单元格是UITableView的一项重要优化技术,它通过复用已经存在的单元格来减少内存消耗和提高性能。当滚动UITableView时,屏幕上显示的单元格会随着滚动不断变化,如果不重用单元格,每次滚动都需要创建新的单元格,这将导致内存消耗过大,性能下降。

重用单元格的机制是通过UITableView的dequeueReusableCell(withIdentifier:)方法来实现的。当一个单元格滚出屏幕时,它会被添加到一个可重用的队列中,然后在需要显示新的单元格时,可以从队列中取出一个已经存在的单元格进行重用,只需要更新单元格的内容即可,而不需要重新创建。

重用单元格的好处包括:

  1. 减少内存消耗:重用单元格可以避免频繁创建和销毁大量的单元格对象,减少内存的占用。
  2. 提高性能:重用单元格可以减少创建和销毁单元格的时间,提高UITableView的滚动性能和响应速度。
  3. 节省资源:重用单元格可以减少对系统资源的占用,提高应用程序的稳定性和可靠性。

因此,不重用单元格的做法是不推荐的。如果需要在UITableView中显示大量数据,建议使用重用单元格的机制来提高性能和内存利用率。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

教你写个多表视图

multi_table.gif 如图所示多表视图是一个很常用东西,之前我是用UIScrollView和UITableViewController。...这样有一个问题,一旦有十几二十个表的话,内存就要爆炸了。解决办法是可以自己写个重用机制,不过这显然没必要,用自带重用机制UICollectionView应该是个更好选择。...bounces = false 这样滑动时候就会有翻页段落感,滑到边界时候也不会有回弹效果。...然后要用 layout 控制布局,用最常用 UICollectionViewFlowLayout 就行了,设置单元格宽高,既然是翻页,宽肯定是跟屏幕等宽,高度就看你需求了,但是不要超过 collectionView...所以如果你继承NSObject的话,还得自己写一堆方法来遵守NSObjectProtocol协议。

1.3K30

【IOS开发基础系列】UICollectionView专题

1.3 关于重用         为了得到高效View,对于cell重用是必须,避免了不断生成和销毁对象操作,这与在UITableView情况是一致。...在iOS5中,Apple对UITableView重用做了简化,以往要写类似这样代码: UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier...有两个主要变化:一是加入了对某个Class注册,这样即使不用提供nib而是用代码生成view也可以被接受为cell了;二是不仅只是cell,Supplementary View也可以用注册方法绑定初始化了...在对collection view重用ID注册后,就可以像UITableView那样简单写cell配置了:     MyCell*cell=[cvdequeueReusableCellWithReuseIdentifier...return cell; }         需要吐槽是,对collection view,取重用队列方法名字和UITableView里面不一样了,在Identifier前面多加了Reuse五个字母

31330

自学Swift之路(一)UI入手之基本控件

UIFont.systemFontOfSize(15) self.view.addSubview(myTextF) 这个myTextF.delegate = self写出来后,程序会报红,理由是没有签订...,两种语言控件属性是一样,只是语法有些不一样而已,多写几个就会发现Swift都是一个套路.那好吧,简单控件就不写了,接下来我们来写下UITableView // 5.UITableView...:咱们可以command+左键点进去UITableViewDataSource看看,是这样: public protocol UITableViewDataSource : NSObjectProtocol...} 当然,别的方法也是一样,如点击单元格: func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath...) { print("点击了单元格") } 好了,这篇文章内容就到这里了,下一篇文章将会围绕UITableView,自定义UITableViewCell来写点可视化内容较强东西

2.9K110

iOS 9 Storyboard 教程(二下)

设置单元格样式为Basic,然后设置它重用标识符为GameCell.你需要为这个控制器所做就是这些. ?...就数据源而言应该那样.运行app然后点击Game行.新Choose Game控制器将会滑出来.然而点击这些行不会做任何事,那是因为这个控制器是在导航堆栈上被弹出来.但是你却总可以点击返回按钮返回到...Paste_Image.png 这很酷,不是?...在Main.storyboard里,按住ctrl把tableview单元格拖拽到Exit,就想你之前一样,然后从弹框中选择unwindWithSelectedGame:. ?...segue对象,在这种情况下就是被选中游戏单元格.所以在games里,你可以使用单元格indexPath来定位选中游戏,然后设置selectedGame,这样的话,它在unwind segue就是可行

2.2K10

底牌项目中选择牌谱上传功能--深刻理解UITableView复用

此界面的布局: 此界面由UITableView构成,根据日期不同设置单元格单元格内是一张张图片,在每张图片上添加了一个按钮用于选择图片。...,如果两张图片一样则将相同图片移除,这样就达到了反选图片效果。      ...选择图片和反选图片问题解决后又有了新问题。 问题: 选中一张图片,然后滑动UITableView,这时发现之前选中图片变成了没选中,如果是刷新和加载同样会出现这样问题。...原因:UITableView复用问题(UITableView复用就不在这里解释了)。...UITableView复用可以节省内存空间,可如果不理解其本质地使用就会出现我所说问题,有时还会出现同样内容重复出现问题(第一个单元格内容发生变化,后面的单元格复用第一个单元格,其上内容也会和第一个单元格内容相同

1K10

iOS流水布局UICollectionView简单使用引实现结

如果熟悉UITableView的话,其实很多地方都是类似的,甚至可以说UITableView是一种特殊UICollectionView,正如正方形是一种特殊矩形一样,UITableView就是一种每行只放一个方块...其实看代码也会发现两者之间有着惊人相似。 自定义Cell 根据UITableView经验。...为了显得真实一点,我用了一个随机数来决定每个cell显示图片和文字,这样在呈现时候就不会太过千篇一律。...还可以设置为水平滚动,只需要改变布局参数设置就可以了;UICollectionViewcell只能通过注册来确定重用标识符,什么叫注册,我们还是看代码: - (void)viewDidLoad {...使用方式,就像UITableView可以简单也可以非常多样,UICollectionView也是一种乍看很平常但可以容纳非常多想象力布局方式,只要善加利用就可以做出很好效果,当然,什么时候用UICollectionView

99200

iOS开发-1.UITableView你会用

前一段时间,公司招聘了一个新员工,界面做出来了,但是很卡,我看完他写代码,发现没有对UITableViewCell进行循环使用,而且在UITableView代理方法中,创建了很多并没有什么用对象,一些调用频繁方法也没有很好地处理...利用标识来注册一个带有标识cell:(前提:通过stroyBoard创建UITableView,那么要拖线拿到它) ?...Paste_Image.png 每一行高度也可以这样设置— self.tableView.rowHeight = 100; 当时上面的高度方法可以搞定不一样cell高度设置 这里引出一个估计cell...Paste_Image.png 选中cell,点击重用标识 这样在代码中,就可以省略掉:那个判断语句:if(cell== nil){创建cell方法} 以后在tableView中开发一个cell ?...Paste_Image.png 如果设置选中cell背景颜色(两种方法) cell.backGroundColor = [UIColor redColor]; 另一种设置方法cell.backgroundView

78330

十大至简规则,用Jupyter Notebook写代码应该这样

选自arXiv 来源:机器之心,作者:Adam Rule、Amanda Birmingham等 你真的是 Jupyter Notebook 高手,真的能将代码和文档打造成铁桶一般整体?...不要只保留零星笔记,而是用解释性文字讲述一个引人入胜故事,故事开头介绍主题,中间介绍步骤,结尾解释结果。不仅要描述你做了什么,还要描述为什么要这样、这些步骤是如何连接,以及它们意味着什么。...规则 4:模块化代码 避免重复代码总是很好做法,但是在 notebook 中,复制一个单元格、调整几行、将生成代码粘贴到新单元格或其他 notebook 中并再次运行是特别容易。...因此你可以将要复制和重用代码包装在一个函数中,这样就可以根据需要从任意多个单元格中调用该函数。...始终在这些依赖项创建环境中工作,以确保添加未记录依赖项。 在 notebook 中,你可以使用 notebook 扩展(如 watermark)显式打印依赖项。

1.1K20

十大至简规则,用Jupyter Notebook写代码应该这样

选自arXiv 作者:Adam Rule、Amanda Birmingham等 机器之心编译 参与:韩放、路 你真的是 Jupyter Notebook 高手,真的能将代码和文档打造成铁桶一般整体...不要只保留零星笔记,而是用解释性文字讲述一个引人入胜故事,故事开头介绍主题,中间介绍步骤,结尾解释结果。不仅要描述你做了什么,还要描述为什么要这样、这些步骤是如何连接,以及它们意味着什么。...规则 4:模块化代码 避免重复代码总是很好做法,但是在 notebook 中,复制一个单元格、调整几行、将生成代码粘贴到新单元格或其他 notebook 中并再次运行是特别容易。...因此你可以将要复制和重用代码包装在一个函数中,这样就可以根据需要从任意多个单元格中调用该函数。...始终在这些依赖项创建环境中工作,以确保添加未记录依赖项。 在 notebook 中,你可以使用 notebook 扩展(如 watermark)显式打印依赖项。

63440

提升UITableView性能-复杂页面的优化

之前项目,青桔音乐iOS客户端里面的首页就是一个类似微信朋友圈“动态”页面,大致如下: 青桔动态页面 如果是你,你会怎么实现这个页面呢?...这还用问,当然是用UITableView+自定义UITableViewCell。 UITableView是可以滑动,为了不让用户在滑动中感到有卡顿,该如何优化?...重用=大致固定数量Cell 并且,凡是认真研究过UITableView的人应该都知道,Apple已经为我们提供了Cell重用,如用“registerNib:forCellReuseIdentifier...”方法注册自定义CellNib,然后在“cellForRowAtIndexPath”时候用“dequeueReusableCellWithIdentifier”获取可以重用Cell,所以,无论UITableView...所以,我们完全可以只创建一种Cell,虽然这样一个Cell“体积”可能会很大,但是介于Cell数量不会很多,所以完全可以接受。

97950

【IOS开发基础系列】Table View开发专题

第一种比较常见,在网上到处都是,我这也是抄别人。主要就是说自己定义一个view,弄成透明,然后盖在TableView上部和下部,这样就“隐藏”了。...,给TableView设置没有分割线,然后给每个cell添加背景图片,图片上画一个线,这样,貌似还不用判断数据为空情况。     ...,cell被重用时,它内部绘制内容并不会被自动清除,因此你可能需要调用setNeedsDisplayInRect:或setNeedsDisplay方法。...最简单方法就是将cellselectionStyle属性设为UITableViewCellSelectionStyleNone,这样就不会被高亮了。...处理section悬浮,禁止section停留方法 http://www.wahenzan.com/a/mdev/ios/2015/0105/1412.html 实现UITableViewCell

25520

【IOS开发进阶系列】APP性能优化专题

其中我们注意采用NSSQLiteStoreType类型,这样底层存储就采用了SQLite数据库,SQLite数据库优点也能发挥出来。...l  表视图(UITableView) l  集合视图(UICollectionView) l  地图视图(MKMapView) 4.1    表视图中重用对象 4.1.1  表视图单元格 dequeueReusableCellWithIdentifier...dequeueReusableCellWithIdentifier:forIndexPath: dequeueReusableCellWithIdentifier: 方法通过可以中标识符从表视图中获得可重用单元格...模式代码如下: 4.2    集合视图中重用对象 4.2.1  单元格视图 4.2.2  补充视图 4.3    地图视图中重用对象 4.3.1  MKPinAnnotationView对象...l  -Os,该种级别用于在有限内存和磁盘空间下生成尽可能小文件,由于使用了很好缓存技术,在某些情况下也会有很快运行速度。

21520

正确复制、重写别人代码,不算抄袭

重用情况下,你不一定会面临这些问题,但是这样风险会增大。在你项目中添加每一行代码就好像是一张彩票,会“赢得”一个非常糟糕问题。...另外一个潜在复制理由是,你可能需要对项目的源码进行修改。如果你要进行增量更改,你可以最好这样:1. 从原项目中创建一个复刻项目;或者 2. 把你更改贡献给原项目。...我唯一能想到一个很好理由就是,将第三方项目的代码复制(而非重写)到你项目中:你只需在这个项目中得到一些源码即可。 而这种理由出现频率超出了你想象。...只有在一些情况下,如果你这么,就能得到很好回报。我来告诉你一个真实案例,我重写了一个第三方项目,并且从中获益良多。...只要遵循开源许可条款,和你工程师伙伴成为好邻居吧。 你希望复制或重写所有的东西。但是要学习辨别哪些情况值得你这么。 并享受与其他人工作中联系。那些数以百万计项目,都是由伟大头脑构建

81920

《iOS Human Interface Guidelines》——Table View表视图

API NOTE 查看Table View Programming Guide for iOS和UITableView来学习更多关于在你代码中定义表视图内容。...在分组风格中,行是显示在分组中,其可以有页眉和页脚。一个分组表视图总是最少包含一个条目清单分组——每一行一个列表项——并且每个分组总是最少包含一个条目。分组表视图包含索引。...这种表单元格风格在列表条目看起来相似时会工作地很好,因为用户可以使用详细文本中额外信息来区分标题文本条目。 Value 1(UITableViewCellStyleValue1)。...即使这个技术推荐用户那些频繁处理数据变更app,它仍然可以帮助更多静态app立即给用户一些静态信息。当你决定这样之前,计量数据改变有多频繁以及有多少用户依赖于快速看到新数据。...显示在表右边界表视图元素——比如扩展指示器——会干扰到索引。 如果你想要用非标准方式布局你单元格,创建自定义单元格风格。创建自定义单元格风格会比标准要更好。

2.4K20

AsyncDisplayKit 2.0 教程:入门「译」

image.png 真是一个流畅 tableView!一旦你开始做了,那就让我们更好吧! 无限滚动 在大多数应用中,服务器数据点个数往往会多于当前 tableView 中显示单元格数量。...这意味着,你必须通过某些手段无缝处理,以便用户刷完当前数据列表时从服务端加载新数据。...还记得告诉你 ASRangeController 是不重要?现在,这将是我们重点。 在每个容器类中,所有包含 node 都有一个接口状态概念。...这样,你就可以监测每个 node 数据加载、内容成、屏幕展示以及所以事情。...Scott Goodson(AsyncDisplayKit原创作者)也有几个你可能会感兴趣的话题。最近的话题很好概述了一些框架对处理大图片存在问题尝试。 你可能会对 Paper构建 感兴趣。

2.1K20

有了Auto Layout,为什么你还是害怕写UITabelView自适应布局?

.由于浮点数四舍五入机制存在,所以偶现UILabel最后一行无法显示情况.原因也很诡异: 在你计算时,部分值会存在稍许超过0.01误差,大多数情况下,这个误差值,可以安全忽略,但是确实存在那0.01...是的,我现在一点也担心去处理各种UITabelView布局.不是因为我有一股所谓不畏艰难伟大工作精神,而是因为我切实找到了解决办法.具体该怎么呢?...Masonry — 使用纯代码进行iOS应用autolayout自适应布局 2.使用 UITableView-FDTemplateLayoutCell 根据单元格内容约束自适应单元格高度 ?...然后,他提到了一个第三方UITableView-FDTemplateLayoutCell,好像是国内大神写,具体介绍可以看这里: 优化UITableViewCell高度计算那些事.这篇文章博主关于...示例下载地址: 点击下载 非常感谢 @未来帅哥 讨论,给了我很大启发和帮助,我也如约做了一个关于Masonry 和 UITableView-FDTemplateLayoutCell结合使用小例子,以解决他问题

82660
领券