2009-08-05 57 views
4

我已经有这样的问题,但我已经删除它。iPhone Dev - 在哪里可以放懒惰加载代码

我有一个非常简单的应用程序,它有一个根视图控制器,并在两个其他视图控制器视图之间切换。所以在我的根视图控制器中,它懒惰地加载了另外两个视图控制器的实例。每次按下工具栏中的切换按钮时,正在显示的当前视图控制器(其视图)被卸载(设置为零),并且新视图控制器被加载并添加到子视图。

由于我加载我的视图控制器和卸载在特定的时间,惰性加载代码在getters是非常混乱,因为我真的不想加载它们,当我使用它们,我需要加载它们之前,所以翻转动画看起来不错。所以我想我想使loadFirstVC和loadSecondVC方法加载视图控制器。这是一个好主意吗?

回答

6

延迟加载的主要原因不是延迟加载,肯定会发生。这是延期加载,可能永远不需要。 (这对数据发生变化时强制重新加载也有好处,但这不是你的问题。)

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

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

它何时重要?那么,这确实是一个优化问题。有一种说法可能会遇到,如果你还没有,那么这是一个很好的时间:“不成熟的优化是所有(编程)邪恶的根源。”

所以问自己两个问题:

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

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

...我怀疑这不能回答你原来的问题,但它听起来像你可能会问第一个地方的错误问题。道歉,如果我错了。

+0

我只是想在一些视图控制器上实现延迟加载 - 但问自己你的两个问题说服我离开它。 – malaki1974 2013-01-25 12:51:38