2009-08-02 42 views
0

(只要你知道我学习开发iPhone,而无需interfacae建设者)iPhone开发 - 多视图应用延迟加载

我编码我的第一个多视图的应用程序,其中有一个根视图控制器和两个其他viewcontroller和根视图控制器使用延迟加载,所以当viewDidLoad,它创建第一个视图控制器,并将其视图添加到子视图,但不创建另一个,直到它需要。但是,在第二个加载后,他们都呆在那里直到应用程序结束(除非它收到内存警告)。

所以我想知道:当用户切换两个其他视图,我应该卸载另一个正在被删除(通过设置为零 - 它的一个保留属性)?所以每次用户点击按钮,当前viewcontroller被卸载(从超级视图中删除后),下一个被加载并添加为子视图?

所以,这是正确的事情,或者它是正确的,但只有当应用程序有很多意见,而我的复杂程度不足以证明这样做,或者它是不好的,我应该只是让didReceiveMemoryWarning照顾它(在didReceiveMemoryWarning我设置视图控制器,目前不显示为零)?

回答

1

答案真的取决于。通常情况下,您应该释放并设置为无显示的视图,但如果用户要频繁切换视图,则可能需要保留隐藏的视图(缓存)。

您并不是真的希望您的应用将用户的手机推送到didReceiveMemoryWarning。当您收到该警告时,手机中会发生其他事情,可能导致您的应用程序在iPhone转储缓存的Safari页面,缓存的UIImageView对象等时冻结一段时间...此过程对于最终用户和您的应用程序可能并不像应该那样流畅。

重要的是要记住,有些用户可能会使用第一代iPhone,iPod Touch和3G,因此他们不会拥有额外的3GS内存。这就是说,我错在保守的内存方面,所以我会释放和取消视图,然后在用户想要看到它时重新实例化它。由于didReceiveMemoryWarning,您的分配视图与系统清理的影响通常会比应用程序的用户少得多。

+0

好的,谢谢。我的意思是让didReceiveMemoryWarning处理它,如果说到这一点,不像这个应用程序可以。 – mk12 2009-08-02 04:16:17