我有一个核心数据模型,我希望使用UITableView
来呈现。问题是每个UITableViewCell
都有自己的自定义高度,计算它需要一些时间。因此,我想预先计算并缓存它们。
这是我的想法:
每个模型都有一个名为cache
的瞬态属性。此属性将包含我自己的缓存对象(NSObject
的自定义子类),可以懒惰地计算其数据。
以下是我的问题:
cache
对象是个好主意吗?或者将它们存储在NSDictionary
中会更好吗?如果是这样,使用ObjectID
作为密钥是否安全?cache
个对象运行后台预先计算。使用NSFetchRequest
访问所有对象(可能是几千个)并让他们的cache
对象预先计算是不是一个好主意?答案 0 :(得分:1)
鲁道夫,
我在表格视图中使用的实体上使用简单的@property CGSize
解决了这个问题。它会在请求行高(-tableView:heightForRowAtIndexPath:
)时检查大小是否为零,如果是,则计算它,将其保存在ivar中并返回它。它非常简单,不需要是模型中的属性。如果此高度可能会发生变化,那么您需要跟踪这些条件并告知表格视图。因此,您可以吹掉缓存的值。
安德鲁
答案 1 :(得分:0)
您尝试缓存的属性似乎不是非常动态,因为您在应用程序启动时计算它。最好使它成为持久属性并在保存到数据库时计算值。如果由于某种原因,值更改,您可以重新计算该值。如果要在后台线程上保存实体上的所有新记录,则效果会更好。