我正在获取一系列注释,我需要在tableView中显示。
tableView具有用于显示内容的自定义单元格。问题是注释文本的长度可能不同,而且在滚动tableView时我面临着严重的内存增长。
我尝试过显示文字的几种方法:
除了tableView似乎没有出列我的自定义单元格,因此在滚动tableView时内存不断增长(我的单元格现在有1.5К文本符号)
像这样创建单元格,所以没什么特别的
- (UITableViewCell*) tableView: (UITableView*) tableView
cellForRowAtIndexPath: (NSIndexPath*) indexPath
{
[tableView registerClass: [CommentCell class] forCellReuseIdentifier: kCommentCellId];
CommentCell* cell = [tableView dequeueReusableCellWithIdentifier: kCommentCellId
forIndexPath: indexPath];
Comment* comment = [self.comments objectAtIndex: indexPath.row];
cell.comment = comment;
return cell;
}
评论属性的自定义设置器
- (void) setComment: (Comment*) aComment
{
self.commentLabel.text = aComment.comment;
[self setNeedsLayout];
}
在单元格中添加注释标签
- (id) initWithStyle: (UITableViewCellStyle) style
reuseIdentifier: (NSString*) reuseIdentifier
{
self = [super initWithStyle: style reuseIdentifier: reuseIdentifier];
if (self)
{
// Comment label
//
self.commentLabel = [UILabel new];
self.commentLabel.textColor = [UIColor colorWithRed: 0.21f green: 0.21f blue: 0.21f alpha: 1.00f];
self.commentLabel.font = [UIFont helveticaNeueRegularOfSize: 13.33f];
self.commentLabel.numberOfLines = 0;
self.commentLabel.lineBreakMode = NSLineBreakByWordWrapping;
[self.contentView addSubview: self.commentLabel];
}
return self;
}
答案 0 :(得分:2)
问题可能是你错误地保留并且永远不会在你没有展示的代码中释放单元格对象,比如你正在做什么来计算不同的行高。
它与标签本身无关,或与显示不同高度的文本有关的任何事情。我制作的桌子的行高不同,标签或文字直接显示的长度不同的文字,没有这样的泄漏。
您可能希望查看有关此主题的section from my book。
答案 1 :(得分:1)
问题在于我以某种方式将tableview框架高度设置为tableviews内容的高度,因此实际上所有单元格都是可见的 - 因此不会被重用。
感谢@matt让我朝着正确的方向前进。