2010-09-25 245 views
1

我有一个每3秒刷新一次的UITableView。我只有在我的布尔变量为true时才重新加载它。在某些情况下,变量始终为真,时间表难以滚动。 (表现不是很好)。其他时候它确定。我该怎么办?注意:我已经根据苹果推荐的方式(UITableView最佳实践)编码了我的表格,除了向UITableViewCell添加子视图,而不是绘制它,我对其他技术很有信心。UITableView滚动问题

这是什么解决方案?

回答

2

您确定因为刷新了很多而难以滚动。这里提到了什么样的令人耳目一新的功能,从网络刷新数据或刷新表格查看您的手机。

每次刷新表格视图或滚动表格视图时,表格视图都会一直询问相应的单元格,现在整个性能取决于您返回单元格的速度。

如果您正在执行自定义UITableViewCell,则存在性能降低的风险。仔细检查这些东西:

  • 您是否正确使用了您的单元格?检查[tableView dequeueReusableCellWithIdentifier:]是否总是返回零。如果它总是返回零,那么你做错了。

  • 检查是否通过使用多线程从网络或文件加载图像(如果是)来阻止主线程。

  • 后您检查一切,仍然有一个缓慢的表现,那么您可能需要减少返回一个细胞的倍(以较少刷新)或绘制自己

+0

是的,我从套接字连接流数据并刷新我的表数据。 (使用[表reladData];我通过测量仪器的性能它不显示存储器滚动时生长和无泄漏有 1.应答是YES 2.我的应用程序的应用程序是一个mutithreaded。应用程序,我更新了主线程上的其他视图的UI(使用performSelectorOnMainThread)。这可能是原因吗? – 2010-09-25 14:29:48

+0

内存泄漏通常对性能没什么大不了(即使它可能导致崩溃)你的意思是其他视图的UI ?它是你的表格视图单元UI还是其他UI?通常,滚动需要大量的CPU处理,以便尽可能快地尽可能快地返回单元格以尽量不要使用主线程 – vodkhang 2010-09-25 14:33:28

+0

b即使在这种情况下,如果添加许多子视图(特别是图像),性能可能仍然很低,那么除绘制单元格外,您没有其他选择 – vodkhang 2010-09-25 14:36:33

0

如果您获取大量的细胞为UITableView设置数据,尝试根据需要获取数据。获取cellForRowAtIndexPath中每个单元格的数据,而不是获取表格视图和存储的所有数据。