UIView:alpha:0,隐藏:YES,removeViewFromSuperview和frame.origin.y = -100000之间的性能/内存差异;

时间:2014-02-12 12:44:11

标签: ios objective-c uiview

临时隐藏视图时(例如,在加载完成之前)设备的最佳效果是什么?

  • 将alpha设置为0?
  • 将隐藏设置为YES?
  • 从superview中删除视图?
  • 将视图移动到无法在窗口/屏幕上显示的位置(例如frame.origin.y = -10000)?

哪种内存最佳,哪种性能最佳?我知道Apple在某处写了一些关于此的内容,但我找不到它。

2 个答案:

答案 0 :(得分:7)

哪种内存最佳

removeFromSuperview是记忆力最好的。为什么?因为它会导致视图被释放。因此,如果该视图未被其他任何人保留(如强大的ivar),则会将其取消分配。

哪种表现最佳?

setHidden:在性能方面是最好的。为什么?因为动作只是设置一个标志。然后在drawRect中它只是一个BOOL检查。所以它真的很快,因为没有涉及其他行动。

答案 1 :(得分:3)

所以,最快的方法是:

  1. setHidden(仅从渲染中删除视图)
  2. alpha0等于setHidden, but it first checks if 0`
  3. removeFromSuperView(需要一些步骤:释放对象,从堆栈(指针)弹出,从渲染堆栈中删除...)
  4. frame.origin.y=-10000>必须移动整个数组并检查视图是否超出范围。不是很快......