代码之家  ›  专栏  ›  技术社区  ›  2snacc

在Cocoa中实例化模型对象的层次结构时,如何减少内存占用?

  •  3
  • 2snacc  · 技术社区  · 16 年前

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

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

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

    目前,当 QuizController 类加载其 Quiz 对象,它填充 questions NSArray 属性与 Question 实例,以及每个实例 问题 实例被初始化,它们各自初始化自己的 不可变数组 第页,共页 Answer 实例。

    我知道我不需要记忆中的每一个问题当我加载一个测验时,我只需要一个问题在某个索引中 测验 实例 问题 数组。

    我在想,某种数据源协议或延迟加载模式将有助于减少在这个系统上加载任何特定测试时产生的内存占用,但我不确定如何实现这两者。我真的很感激社区在以下方面提出的任何建议:

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

    1 回复  |  直到 16 年前
        1
  •  3
  •   Stefan Arentz    16 年前

    我完全赞成适当的设计来最小化内存的使用,但有时你也必须务实。

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

    你可能很容易在记忆中加载数百个问题,而不会注意到它。

    我的建议是:开始非懒惰的方式。用仪器检查内存使用情况。它是可以接受的,然后离开它。如果你在挑战极限,那么就花时间进行优化。