【问题标题】:Forcing a controller's view into memory强制控制器的视图进入内存
【发布时间】:2012-10-24 15:12:13
【问题描述】:

为了解决一些性能问题,我开始回收一些视图控制器。然而,重用回收控制器视图的性能优势只有在该视图已被绘制时才会出现。例如,如果我想用控制器预先填充回收队列,但从不将其视图放在屏幕上,我就没有这样的好处。

如何强制将控制器的视图“预渲染”并添加到我的队列中,这样当它被回收时,我可以从其他回收的控制器中获得性能优势?我知道控制器的视图是在第一次需要时创建的,但即使添加视图并立即删除它(在显示父视图之前)似乎也没有这样做。

【问题讨论】:

  • 性能问题是内存还是cpu相关?
  • CPU/gpu -instruments 表示是视图的绘制

标签: iphone performance cocoa-touch uiview uiviewcontroller


【解决方案1】:

我第一个想到的快速而肮脏的方法就是将控制器的视图设置为隐藏,并且仍然将其“绘制”到屏幕上。

也就是说,我很好奇您观察到的“性能问题”是什么。取决于是 UIViewController 本身的创建,还是导致问题的 UIViews,那么可能会有更好的整体解决问题的方法。

【讨论】:

  • 当用户浏览滚动视图时,我正在按需加载子视图控制器。在较慢的设备上,随着控制器的创建和视图的构建,滚动中有一个明显的粘性点。回收控制器而不是创建每个控制器是有帮助的。
  • 我不太明白你的问题。就像你说的,一个 ViewController 的视图是在第一次访问时加载的。如果您只是在创建父视图时创建子视图控制器并在将它们放入队列之前立即访问它们的视图,那么您的初始加载时间应该会更长,但在将子视图控制器视图添加到滚动视图时应该不会影响性能。如果这就是您正在做的事情,但您仍然遇到性能问题,您能否发布一些代码以便我们查看问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 2016-03-31
  • 2016-08-23
相关资源
最近更新 更多