移动开发:dequeueReusableCellWithIdentifier的运行机制
来源:互联网 发布:订货系统源码 编辑:程序博客网 时间:2024/04/27 04:50
dequeueReusableCellWithI
之所以不说是初始化一个对象,是因为它可能返回nil值,所以才要在下面补充一个如果cell为nil时的处理过程。
那么这个方法是不是可以解释成为,从一个UITableViewCell对象池中获取一个以Identifier参数命名的UITableViewCell对象。
如果在资源紧缺的时候,这个池会自动清理多余的UITableViewCell对象,则可能无法返回对象,但如果资源丰富,则会保存一些UITableViewCell对象,在需要调用的时候迅速的返回,而不用创建。
dequeueReusableCellWithI
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就搞定了。。
文章来源:http://blog.sina.com.cn/s/blog_a7345abe0101c6xc.html
- 移动开发:dequeueReusableCellWithIdentifier的运行机制
- dequeueReusableCellWithIdentifier的运行机制
- dequeueReusableCellWithIdentifier的运行机制
- (0069)iOS开发之dequeueReusableCellWithIdentifier的两个方法的区别
- dequeueReusableCellWithIdentifier和dequeueReusableCellWithIdentifier:forIndexPath的区别
- dequeueReusableCellWithIdentifier: 与dequeueReusableCellWithIdentifier: forIndexPath:的区别
- dequeueReusableCellWithIdentifier:和dequeueReusableCellWithIdentifier: forIndexPath:的问题
- dequeueReusableCellWithIdentifier的理解
- dequeueReusableCellWithIdentifier的理解
- dequeueReusableCellWithIdentifier
- dequeueReusableCellWithIdentifier
- dequeueReusableCellWithIdentifier
- dequeueReusableCellWithIdentifier
- -[UITableView dequeueReusableCellWithIdentifier:] 的意义何在?
- 对于dequeueReusableCellWithIdentifier:的个人理解
- UITableView 关于dequeueReusableCellWithIdentifier的问题
- 对于dequeueReusableCellWithIdentifier:的个人理解
- 对于dequeueReusableCellWithIdentifier:的个人理解
- iOS第三方开源库的吐槽和备忘
- 【待续,啊啊啊啊】【找了一遍,最后成功!!】stm32 USART 防止发送缓冲区被新来的数据覆盖
- Linux下用C语言检查指定程序名的运行实例个数
- 关于httpservice和webservice
- C++细节7
- 移动开发:dequeueReusableCellWithIdentifier的运行机制
- C#右下角弹窗不影响主程序的另类实现
- 【Android】日期拾取器、时间拾取器与菜单
- keil 编译后 flash 和 ram 占用情况
- Console2:Windows命令行威力加强版
- linux和window下生成任意大小的文件
- ios开发FMDB导入SQLCipher加密数据库
- MVC项目搭建--Java1.7+Eclipse luna + Maven 3.2.5 +spring 4.1.4
- 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件