tableView 下拉刷新,卡。

sheldenZhang 2013-08-29 09:41:51
这个问题困扰两个星期了,求大神帮忙解决。我自己写了一个cell继承了UITableViewCell,然后在cell里面加了贴图和标签,以达到项目需要的效果。问题来了。。。在真机测试的时候,tableView往下拖,刷新新的cell会卡。而且调试发现,不停的上拉下拉。内存会不断增加。上代码

- (ChatCustomCell1 *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
static NSString *identifier = @"tableViewIdentifier";
ChatCustomCell1 *cell = [tableView dequeueReusableCellWithIdentifier: identifier];
if(cell == nil)
{
[self.cellNib instantiateWithOwner:self options:nil];
cell = tmpCell;
self.tmpCell = nil;
}
NSInteger row = [indexPath row];
ChatMessage *chatMessage = (ChatMessage *)[chatMessageArray objectAtIndex:row];
cell.messageLable.text = chatMessage.message;

// 设置cell
if (chatMessage.fromMyself)
{
UIImage *image = [UIImage imageNamed:@"online.png"];
cell.leftFaceImageView.image = image;
[image release];
[cell.leftTimeLable setText:chatMessage.messageTime];
UIImage *image1 = [UIImage imageNamed:@"bubule2"];
cell.messageBackImage.image = image1;
[image1 release];
AppDelegate *myApp = [[UIApplication sharedApplication] delegate];
cell.leftNameLable.text = myApp.loginName;
}
else
{
UIImage *image = [UIImage imageNamed:@"online.png"];
cell.rigthFaceImageView.image = image;
[image release];

cell.rightTimeLable.text = chatMessage.messageTime;
UIImage *image1 = [UIImage imageNamed:@"bubule1"];
cell.messageBackImage.image = image1;
[image1 release];
cell.rightNameLable.text = chatMessage.senderName;
}
cell.messageLable.textAlignment = NSTextAlignmentCenter;
cell.messageLable.font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
[cell.messageLable setNumberOfLines:0];
return cell;
}
...全文
232 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
RannieR 2013-08-31
  • 打赏
  • 举报
回复
在if最后把register 设成YES
RannieR 2013-08-31
  • 打赏
  • 举报
回复
刚才仔细看了下你的代码,你试试这个方法
static BOOL register = NO if(!register) { NSBundle *bundle = [NSBundle bundleForClass:[ChatCustomCell1 class]]; UINib *cellNib = [UINib nibWithNibName:@"ChatCustomCell1" forBundle: bundle]; [tableView registerNib:cellNib forCellReuseIdentifier:identifier]; } ChatCustomCell1 *cell = [tableView dequeueReusableCellWithIdentifier: identifier];
sheldenZhang 2013-08-30
  • 打赏
  • 举报
回复
引用
self .cellnib 感觉每次生成并没有 释放 你去看下吧
是的,你说的有道理,给个建议怎么释放掉呗。
Z.KaiLove 2013-08-30
  • 打赏
  • 举报
回复
self .cellnib 感觉每次生成并没有 释放 你去看下吧
倪文康 2013-08-30
  • 打赏
  • 举报
回复
self.tmpCell 不需要设全局变量,因为每次生成的cell你都赋值给self.tmpCell,而self.tmpCell一直都没有释放,只有本类release了cell才会释放。不需要设置全局变量,有方法可以拿到制定的cell.
RannieR 2013-08-29
  • 打赏
  • 举报
回复
你可以看下提升Tableview性能方面的知识,加载数据可以绑定到你子类化cell的那个类中去

29,041

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧