iOS学习之—— dequeueReusableCellWithIdentifier
2016-05-24 10:17
387 查看
dequeueReusableCellWithIdentifier,从字面上理解是“出列的可重用的cell”,其实简单说就是一个cell池,里面放的就是你之前创建过的cell。使用时要注意:
1。重取出来的cell是有可能已经捆绑过数据或者加过子视图的,所以,如果有必要,要清除数据(比如textlabel的text)和remove掉add过的子视图(使用tag)。
2。这样设计的目的是为了避免频繁的 alloc和delloc cell对象而已,没有多复杂。
3。设计的关键是实现cell和数据的完全分离
关键点在”一个屏幕显示的cell数量”是有限的
当屏幕滚动时候,就会调用方法获取新的cell,而老的cell会在屏幕外面就不显示了
reuse机制就是这样。。当cell需要显示的时候,从queue里面找,找到了,设置一下内容,显示出来
滚动界面当有cell被移出屏幕时,把这个cell丢到queue里面
显示新的cell时,如果有“相同类型”(identifier)的cell,就从队列拿一个出来,设置数据,显示出来
至于queue里面会有多少cell,这个会自动控制
要注意的是,queue里面存储的是cell的实例,不是原型”
因此就会出现上面说的“假设每页有5个。 则第6个复用第1个cell; 第7个复用第2个;”
这样的结果是不管你的table有多少行,内存里实际上都只需要存储一个屏幕那么多行的cell就搞定了。
1。重取出来的cell是有可能已经捆绑过数据或者加过子视图的,所以,如果有必要,要清除数据(比如textlabel的text)和remove掉add过的子视图(使用tag)。
2。这样设计的目的是为了避免频繁的 alloc和delloc cell对象而已,没有多复杂。
3。设计的关键是实现cell和数据的完全分离
关键点在”一个屏幕显示的cell数量”是有限的
当屏幕滚动时候,就会调用方法获取新的cell,而老的cell会在屏幕外面就不显示了
reuse机制就是这样。。当cell需要显示的时候,从queue里面找,找到了,设置一下内容,显示出来
滚动界面当有cell被移出屏幕时,把这个cell丢到queue里面
显示新的cell时,如果有“相同类型”(identifier)的cell,就从队列拿一个出来,设置数据,显示出来
至于queue里面会有多少cell,这个会自动控制
要注意的是,queue里面存储的是cell的实例,不是原型”
因此就会出现上面说的“假设每页有5个。 则第6个复用第1个cell; 第7个复用第2个;”
这样的结果是不管你的table有多少行,内存里实际上都只需要存储一个屏幕那么多行的cell就搞定了。
相关文章推荐
- POJ 2478 Farey Sequence(欧拉函数前n项和)
- iOS学习之——UIImagePickerController从拍照、图库、相册获取图片
- iOS UITableViewCell 表格式图滑动删除
- iOS-UIView属性之clipsToBounds
- iOS学习之—— UIViewAutoresizing(自动布局)
- 图片适应UIImageView
- iOS学习之—— UIPageViewController
- 跨线程访问UI
- liferay-ui:search-container reset cur page 当点列排序时,把当前页号重置为1.
- easyui在当前tab中直接加载url
- Fdfs错误tracker_query_storage fail, error no: 2, ...
- 关于jar包add to build path与放入lib下的区别
- 【设计模式】创建型模式之生成器Builder
- Android进阶UI之使用自定义字体
- java入门教程-2.7 Java StringBuffer与StringBuider
- Vue.js的表格分页组件
- ReflectionToStringBuilder类
- MiniUI总结
- [iOS]关于状态栏(UIStatusBar)的若干问题
- Android As报错:Warning:Gradle version 2.10 is required. Current version is 2.8. If using th....