使用数据填充UITableView

时间:2009-08-29 16:21:38

标签: ios iphone uitableview

首先,虽然我对一些基础知识有所了解,但我仍然是一个新手。

我有一个分段UITableView,我目前正在使用NSDictionary(用于分组)和4或5个不同的NSArrays(对于数据,其中一些在选择单元格时会传递到下一个视图)填充表格。它有效,但它是一个非常长的列表,在向上和向下滚动UITableView几分钟后,离开该视图并回到它,应用程序开始“减速”并最终冻结。我一直在做一些研究,并发现我这样做的方式不是最好的方法。我已经阅读过使用另一个对象来填充表格,该表格只会根据需要加载数据,并且不会将这些数据保存在内存中(这可能导致我的应用程序冻结)。

任何人都可以帮我指出正确的方向来构建一个“数据对象”来存储我的数据,然后在我的UITableView中使用它吗?我可以只拿我的NSDictionariesNSArrays并以某种方式把它们放在自己的班级并打电话给那个班级吗?我会使用核心数据吗?还有其他建议吗?请注意,此数据无法由用户添加,更新或删除。我唯一一次更改数据的方法是添加更多数据(一个全新的记录),使列表更长,可能偶尔一次,但很少,更新或删除。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

UITableViewController在与CoreData结合使用时效率最高。为此,您应该查看NSFetchedResultsController。如果您想要一种简单的方法进入CoreData,请使用 MagicalRecord 。它非常易于使用且非常高效。

但是,值得注意的是,带有几个NSArray的NSDictionary填充了数千个NSStrings不应该导致内存问题。事实上,您首先可以将其加载到内存中,这表明您可以将整个数据结构保存在内存中。滚动时减速和冻结的事实意味着内存问题来自UITableView单元实例化。

以下是您应该检查的一些事项:

  1. 你知道如何使用乐器吗?如果是这样,请检查内存是否泄漏。
  2. 您是否在UITableViewController中收到didReceiveMemoryWarning?我猜是这样的。但是你想确定它不是一些线程阻塞问题。
  3. 您是否在UITableViewCells中使用图像?如果您有数千张图像,那么您肯定希望使用NSCache来存储它。这将在需要时自动清理内存。
  4. 您使用的是自定义UITableViewCells吗?由于滚动速度较慢,请检查自定义单元格是否存在绘制问题。
  5. 确保你要离开细胞。这是在模板UITableViewController代码中完成的,但您可能由于某种原因将其删除。