【发布时间】:2014-10-13 23:24:03
【问题描述】:
我有一个数组,其中包含我想在表格视图中显示的图表。由于绘制图表需要几毫秒,这会使滚动不稳定,我想从重复使用的单元格的 cell.contentView 中删除旧图表,并在滚动时添加一个带有正确图表的新子视图(参见下面的源代码)。这有效:图表正确显示。
但是,当添加子视图时,使用的内存会增加,并且第一次向下滚动是不稳定的(在所有行显示一次后滚动并不不稳定)。
似乎已经存储在实例变量(strong)中的图表数据被复制(不仅仅是引用)到 UITableViewCell 中。
我想避免这种情况,以便使用更少的内存。
总结:如何避免在使用 addSubview 时我的图表被复制到 UITableViewCell 中。相反,我想在使用 addSubview 时仅添加对我的数据的引用。
static NSString *CellIdentifier = @"chart";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell==nil)
{
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
VMKChartData *chartData = [shinobiCharts_ objectAtIndex:rowNumber];
ShinobiChart *shinobiChart = chartData.shinobiChart;
[cell.contentView addSubview:shinobiChart];
[self setSeparatorInsets:cell];
return cell;
【问题讨论】:
标签: objective-c uitableview memory-leaks charts addsubview