He hecho un experimento en iOS6 iPad mini, con una gran vista de desplazamiento que tiene un montón de contenido rico (incluyendo imágenes, sombras, gradientes, imágenes de fondo con dibujos, ya sabes, esos diseñadores :)) y Encontré view.hidden = YES ≠ [ver removeFromSuperview].
Originalmente pensé que la configuración oculta a SÍ hará que la vista no sea renderizada/dibujada, por lo tanto, tener muchas vistas ocultas no tendrá impacto en la eficiencia. Pero el resultado real es: 1) si configuro las vistas fuera de pantalla en la vista de desplazamiento grande a ocultas (y las visualizo cuando vuelven al área visible), el desplazamiento no es uniforme/continuo. Cuando se desacelera naturalmente, se ve muy nervioso. 2) si elimino las vistas fuera de pantalla de la vista de desplazamiento (pero aún las guardo en la memoria con una matriz de seguimiento, para que cuando vuelvan puedan agregarse inmediatamente), el desplazamiento es obviamente más suave.
Entonces, ¿cuál es la diferencia entre renderizar un UIView oculto y no tener esa vista en la jerarquía de vista? ¿Hay una diferencia? – bas
Sí. En caso de que se haya eliminado, básicamente lo está recreando desde cero. Esto podría ser bueno para la administración de memoria, pero podría ser malo para el rendimiento, y menos lindo ya que no se puede animar el cambio. – Mundi
Bueno, si mantienes una referencia a la vista, no es necesario volver a crearla. Me interesaba la sobrecarga de alterar la jerarquía de vistas. ¿Qué provoca esta alteración? Imagino que básicamente altera una estructura de árbol que UIKit está administrando como una representación de la jerarquía de vista. ¿Crees que eso es correcto? – bas