2010-11-22 90 views
2

所以我有一个表格视图,我正在填充自定义表格单元格。我遇到的问题是,当大量物品开始填满桌子时,滚动时开始放慢速度。 (我已经实现了动态滚动,因此用户滚动时会出现一种方法,从服务器中取出下一个x项目,以便在不刷新/按任何内容的情况下滚动至其内容的内容。)UITableView自定义单元格,滚动和内存管理

现在我是从自定义模板创建的细胞我建于IB和初始化它们是这样的:

CustomCellClass *cell = (CustomCellClass *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil]; 
    cell = (CustomCellClass *)[nib objectAtIndex:0]; 
} 

应该如何在这样的情况下,内存管理工作,所以我不最终以内存和减慢巨大的采空区向下滚动?任何帮助/建议/见解将不胜感激。谢谢!

编辑:我检查了内存泄漏,所以不应该是问题。

回答

1

因此,我发现了一个用于提取数据的数据控制器类中的深层次内存泄漏。这是造成经济放缓的原因。我看到大量的内存使用正在进行,但仪器没有检测到泄漏。只是去显示没有更好的旧手动调试。 :) 谢谢您的帮助。

0

您为管理表格单元显示的代码片段看起来很好。

从您的描述来看,这听起来像瓶颈是从服务器(网络服务?)实际的数据检索。您是在主线程还是单独的线程上进行Web服务调用?如果您还没有这样做,也许您可​​以在单独的线程上调用Web服务,并创建“占位符”单元格,稍后在Web服务完成后刷新。这应该保持UI的响应,尽管你不一定会立即在每个单元中看到数据(例如,它可能会说“加载”或类似的东西,直到数据可用)。

+0

是的,我是这样做的异步,所以用户界面不冻结。它工作的很好,但是当大量的细胞被加载时它会有一些滞后。这有点奇怪,因为如果我钻入一个单元然后回去,那么好的表现会回来。所以我有点不知所措... – gabaum10 2010-11-22 15:52:17

+0

你可以添加一些NSLog调用到你的CustomCellClass并观察init/deallocs,以确保表单元的内存管理工作正常。一旦你获得了一个充满单元的屏幕,它应该从这一点开始重用单元格(例如,当你滚动时,不应该有init/dealloc)。那会告诉你这个问题是在表格单元还是在其他地方。 – cbranch 2010-11-22 15:57:52

+0

哈哈哦,请检查我的答案。 – gabaum10 2010-11-22 16:06:04

相关问题