2

我有一个核心数据模型,我想使用UITableView. 问题是每个UITableViewCell人都有自己的自定义高度,计算它需要一些时间。因此,我想预先计算并缓存它们。

这是我的想法:

每个模型都有一个称为 的瞬态属性cache。该属性将包含我自己的缓存对象(的自定义子类NSObject),这些对象能够懒惰地计算它们的数据。

这是我的问题:

  • 使用瞬态属性来存储我的cache对象是个好主意吗?还是将它们存储在一个更好的NSDictionary?如果是这样,ObjectID作为钥匙使用是否安全?
  • 应用程序启动后,我需要为所有cache对象运行后台预计算。NSFetchRequest使用并要求他们的cache对象预先计算来访问所有对象(可能是几千个)是一个好主意吗?
4

2 回答 2

1

鲁道夫,

@property CGSize我在表格视图中使用的实体上使用简单的方法解决了这个问题。当请求行高时,它会检查大小是否为零(-tableView:heightForRowAtIndexPath:),如果是,则计算它,将其保存在 ivar 中并返回它。它非常简单,不需要成为模型中的属性。如果这个高度可以改变,那么您需要跟踪这些条件并通知表格视图。因此,您可以清除缓存的值。

安德鲁

于 2013-01-27T12:50:40.553 回答
0

您尝试缓存的属性似乎不是很动态,因为您是在应用程序启动时计算它。您最好将其设为持久属性并在保存到数据库时计算值。如果由于某种原因值发生变化,您可以重新计算该值。如果您将实体上的所有新记录保存在后台线程上,则效果会更好。

于 2013-01-25T18:55:40.363 回答