3

我正在为 iPhone 编写一个测验应用程序,使用基本NSObject子类来表示模型。在运行时,各种控制器实例化模型类并使用从磁盘上的 plist 读取的数据填充它们。

模型类代表多项选择测验的基本层次结构:

  • 一个应用程序有许多测验
  • 一个测验有很多问题
  • 一个问题有很多答案

目前,当QuizController类加载它的Quiz对象时,它会用实例填充它的questions NSArray属性Question,并且随着每个Question实例的初始化,它们每个都会初始化它们自己NSArrayAnswer实例。

我认识到,当我加载测验时,我不需要内存中的每个问题,我只需要Quiz实例questions数组中某个索引处的问题。

我认为某种数据源协议或延迟加载模式将有助于减少在该系统上加载任何特定测验时产生的内存占用,但我不确定如何实现。我非常感谢社区在以下方面提出的任何建议:

什么模式适合在这里使用?一个简短的代码片段对我理解如何开始实现它也很有帮助。

4

1 回答 1

3

我完全赞成适当的设计以尽量减少内存使用,但有时你也必须务实。

在旧设备上,您的应用程序至少有 20 MB 可用内存,所以我实际上不确定花大量时间在延迟加载问题上是否有意义。

您可能可以轻松地在内存中加载数百个问题而不会注意到它。

我的建议:从非懒惰的方式开始。使用 Instruments 查看内存使用情况。这是可以接受的然后离开它。如果您要突破极限,请花时间进行优化。

于 2010-03-01T04:05:39.620 回答