ios objective-c uiview subview

ios - Rendimiento de UIView: removeFromSuperview VS hide



objective-c subview (2)

He realizado un experimento en el iPad mini de iOS6, con una gran vista de desplazamiento que tiene mucho contenido enriquecido (incluidas imágenes, sombras, capas de degradado, imágenes de fondo estampadas, esos diseñadores :)) y encontré esa vista .hidden = YES [ver removeFromSuperview].

Originalmente pensé que la configuración oculta en SÍ hará que la vista no se renderice / dibuje, por lo tanto, tener muchas vistas ocultas no tendrá ningún impacto en la eficiencia. Pero el resultado real es: 1) si configuro las vistas fuera de pantalla en la vista de desplazamiento grande como ocultas (y las muestro cuando regresan al área visible), el desplazamiento no es suave / continuo en absoluto. Cuando se está desacelerando de forma natural, se ve muy nervioso. 2) si elimino las vistas fuera de pantalla de la vista de desplazamiento (pero sigo en la memoria con una matriz de seguimiento, así que cuando vuelvan a aparecer se pueden agregar de inmediato), el desplazamiento es obviamente más suave.

Esta pregunta es realmente básica. ¿Cuál es la diferencia de rendimiento entre eliminar una UIView de la jerarquía de vistas y ocultar una UIView ?

He leído que las vistas que no son necesarias deben eliminarse de la jerarquía de vistas. Actualmente tengo la situación de que un UIButton veces debería ser visible. ¿Cuándo UIButton el UIButton y cuándo lo quito de su supervisión?

¿Es caro cambiar la jerarquía de vistas?


Si necesita alternar entre mostrar y ocultar la subvista, el mejor enfoque es definitivamente ocultarla. Para un UIButton las implicaciones de memoria no son tan grandes de todos modos. Y el código es ciertamente más simple si simplemente cambias la propiedad hidden .

Además, obtienes la ventaja adicional de que la propiedad hidden es animable.