【问题标题】:iPhone - subview stacking slowing down application?iPhone - 子视图堆叠减慢应用程序?
【发布时间】:2010-07-06 17:08:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 来自常见问题解答。当您决定哪个答案对您最有帮助时,通过单击答案左侧的复选框轮廓将其标记为已接受的答案。这可以让其他人知道您的问题得到了很好的回答。这样做很有帮助,因为它向其他人表明您从社区中获得了价值。 (如果您不这样做,人们通常会礼貌地要求您返回并接受更多问题的答案!)

标签: iphone objective-c cocoa-touch uiview


【解决方案1】:

阅读Modal View Controllersmemory management 上的View Controller Guide 部分。当您想临时显示一个新屏幕并使用UINavigationController 用于“向下钻取”视图时,更喜欢使用模态视图而不是子视图。

【讨论】:

  • 感谢本指南的链接。我认为组合视图控制器对我来说更好,因为我的应用程序已经是这样的了,它有一个标签栏控制器,每个标签都有自己的导航栏。
【解决方案2】:

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

【讨论】:

  • 这也很有用。谢谢。
【解决方案3】:

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

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

【讨论】:

  • 对,我没有考虑内存使用情况,正如你所说,这很重要。我会努力寻找更好的方法。
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多