iPhone Dev - 在哪里放置延迟加载代码

时间:2009-08-05 04:33:42

标签: iphone uiviewcontroller lazy-loading clarity

我已经有了这样的问题,但无论如何我已经将其删除了。

我有一个非常简单的应用程序,它有一个根视图控制器,它在两个其他视图控制器视图之间切换。所以在我的根视图控制器中,它延迟加载其他两个视图控制器的实例。每次按下工具栏中的开关按钮时,将显示当前正在显示的视图控制器(其视图)(设置为nil),然后加载新视图控制器并将其添加到子视图中。

由于我在特定时间加载视图控制器并卸载,因此在getter中的延迟加载代码非常混乱,因为我实际上并不想在我使用它们时正确加载它们,我需要在它们之前加载它们翻转动画看起来不错。所以我想我想让loadFirstVC和loadSecondVC方法加载视图控制器。这是个好主意吗?

1 个答案:

答案 0 :(得分:6)

延迟加载的主要原因不是推迟肯定会发生的加载。它用于推迟可能永远不需要的负载。 (当数据发生变化时强制重新加载也很有用,但这不是你的问题。)

示例:假设您有一堆关于某人的数据,包括照片,该照片存储在外部文件中。但是,只有当用户进入子视图时才会显示照片,那么为什么要加载来自其文件的照片,直到您确定子视图将会出现为止?狂热,使用延迟加载。

当你知道你想要加载某个数据时,在你加载它的时候它不太重要。

什么时候重要?嗯,这真的是优化问题。有一种说法你可能遇到过;如果你还没有,这就像任何时候一样好:“​​过早优化是所有(编程)邪恶的根源。”

所以问自己两个问题:

  1. 肯定需要这些数据吗?如果否,继续使用延迟加载技术。如果是,请转到问题2.

  2. 加载数据时是否重要? [一个例子是,它是巨大的,我不想加载它,直到我卸载其他东西为它腾出空间]如果没有,把它放在任何有用的地方。如果是的话......回来再问我们,并提供更多细节。

  3. ...我怀疑这不能回答你原来的问题,但听起来你可能首先会问错误的问题。如果我错了,请道歉。