UItableviewcell“单元标识符”内存pipe理

如果我们给所有细胞同样的标识符,消失细胞使用出现细胞的记忆。 手段内容将重复,当我滚动表视图。 但是如果我们给diff标识符,那么每个单元格都会有自己的内存位置并且完美地显示数据。

现在假设我有1000或更多的logging加载在表视图。 如果我给出不同的标识符,内存中将会有大量的分配。 那么有没有解决scheme,以最小的内存分配完美地显示数据?

以下是我如何定义单元格标识符:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = [NSString stringWithFormat:@"%d%d",indexPath.section,indexPath.row]; UITableViewCell *Cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (Cell == nil) { Cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; } } 

你应该清除出列单元格的内容,如清空标签和其他内容。 如果你为每个单元分配单独的内存,你将很容易变成低内存。 完美的内存pipe理仍在重用单元。

您遇到的问题是由您不正确地使用单元格标识符引起的。 对于您想要重用的所有单元格,单元格标识符应该是相同的。 看看这个模板,它应该解释正确的方法:

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = @"MY_CELL"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; // everything that is similar in all cells should be defined here // like background colors, label colors, indentation etc. } // everything that is row specific should go here // like label text, progress view progress etc. return cell; } 

顺便说一句。 使用骆驼案例来命名你的variables,大写的名字是为了类名。