UITabelView 详解

设置 UITableView 边框  cell 边框  竖线

需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"

 

self.tableView.layer.borderWidth = 1;
self.tableView.layer.borderColor = [[UIColor blackColor] CGColor];

 

 cellForRowAtIndexPath 内成员变量被释放原因研究(ing...)

资料:

IOS解决UITableView滚动时崩溃 

使用uitable的cellForRowAtIndexPath方法里数据对象总被莫名其妙的释放

一个内存释放问题   

参考:IOS控件UITableView详解

 

dequeueReusableCellWithIdentifier的运行机制猜测

 这个问题答案核心是这个机制要解决什么样的问题。

关键点在"一个屏幕显示的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://www.cocoachina.com/bbs/simple/?t21315.html

参考:关于TableViewCell生成时dequeueReusableCellWithIdentifier的认识  写的不错

 

tableViewCell重用的本质是什么,可以按如下方式理解

当我们创建一个TableViewCell类时,我们通常会写如下两个方法;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    //在此处对用到的空间、属性进行内存分配(如alloc等操作)
}


-(void)layoutSubviews
{
  // 在此处对控件进行赋值,或者属性变更操作。(万不可在此处进行内存分配操作。)
}

其实,在代码层面上,tableView Cell重用机制的本质是,当重用某个cell时,不会再次执行  initWithStyle方法,而是直接执行 layoutSubviews 方法。!

 

转载于:https://www.cnblogs.com/ygm900/archive/2013/05/19/3087187.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值