iPhone - 子视图堆叠减慢应用程序?

时间:2010-07-06 17:08:53

标签: iphone objective-c cocoa-touch uiview

正如标题所说,我想知道堆叠子视图是否会降低iPhone应用程序的速度。

例如,我有一个UIViewController,它有一个占据整个屏幕的视图。当用户按下按钮时,我创建第二个视图控制器并将其视图添加为原始VC的子视图,使第二个视图完全隐藏第一个视图。

应用程序是否有某种自动优化,就像“好吧,我知道要为屏幕的每个像素绘制什么,我停止寻找子视图”?

如果没有,我不认为堆叠2个全屏视图可以真正减慢应用程序的速度,但如果它们包含许多子视图本身(标签,图像),则可能会有3个,4个或更多视图出现问题吗?

3 个答案:

答案 0 :(得分:4)

阅读View Controller GuideModal View Controllers上的memory management部分。当您想要临时呈现新屏幕并使用UINavigationController“向下钻取”视图时,更喜欢使用模态视图而不是子视图。

答案 1 :(得分:2)

您始终可以在未看到的视图上设置UIView#hidden = YES。这应该可以防止重绘。

答案 2 :(得分:1)

这在很大程度上取决于子视图包含的内容以及应用程序的总内存负载。内存对于像iPhone这样的设备非常重要,你永远不应该保留你不需要的东西。当您添加许多子视图而不释放任何子视图时,您的内存需求显然会增加。这可能会减慢应用程序速度,甚至可能导致应用程序崩溃。堆叠两个可能不是问题,但堆叠许多不是一个非常好的设计。

所以摘要是你应该总是通过仪器检查应用程序的内存负载,并始终正确响应内存警告。